C
Exxfire
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C语言头文件/工程组织原则
一、 头文件组织原则源文件中实现变量、函数的定义,并指定链接范围。头文件中书写外部需要使用的全局变量、函数声明及数据类型和宏的定义。 建议组织头文件内容时遵循以下原则: 1)头文件划分原则:类型定义、宏定义尽量与函数声明相分离,分别位于不同的头文件中。内部函数声明头文件与外部函数声明头文件相分离,内部类型定义头文件与外部类型定义头文件相分离。 注意,类型和宏定义有时无法分拆为不同文件,比如结构体内数组成员的元素个数用常量宏表示时。因此仅分离类型宏定义与函数声明,且分别置于*.th和*.fh文件(转载 2021-06-10 17:09:30 · 740 阅读 · 0 评论 -
struct 对齐原则
原则一:结构体中元素是按照定义顺序一个一个放到内存中去的,但并不是紧密排列的。从结构体存储的首地址开始,每一个元素放置到内存中时,它都会认为内存是以它自己的大小来划分的,因此元素放置的位置一定会在自己宽度的整数倍上开始(以结构体变量首地址为0计算)。原则二:在经过第一原则分析后,检查计算出的存储单元是否为所有元素中最宽的元素的长度的整数倍,是,则结束;若不是,则补齐为它的整数倍。...转载 2021-06-01 17:55:59 · 198 阅读 · 0 评论 -
switch case使用注意事项
#include <stdio.h>#include <stdlib.h>typedef struct{int a;short b;char * c;}test_switch1_t;typedef struct{int test1;int a;short b;char * c;}test_switch2_t;int main(){int flag = 0;switch (flag){case 0:;test_switch1_t *test1原创 2021-05-31 11:26:00 · 213 阅读 · 0 评论 -
无名结构体和联合体(struct&union)
记得之前在哪里看到了如下形式的结构体和联合体的命名方式;union{char alpha;int num;};struct{char alpha;int num;};因为写代码的时候用到了,在外网上找了点资料,把这个点记下来;Anonymous unions/structures are also known as unnamed unions/structures as they don’t have names. Since there is no names, direct o原创 2021-05-31 10:40:02 · 1526 阅读 · 3 评论 -
结构体的位域排列
typedef struct{char x:2,y:3,z:3;}test2_t;=======================test2_t c1;c1.x =1;c1.y =2;c1.z =3;int* c2 = (int *)&c1;printf(“c1.x = %d\n”, c1);输出结果:c1.x = 105转换为二进制为:011 010 01 排列次序分别是 z y x涉及到MSB 和LSB的知识点,顺便收集:(MSB)100 0011(LSB)将原创 2021-05-28 17:06:58 · 305 阅读 · 0 评论 -
关于C语言指针进行四则运算后变化的一点研究
#include <stdio.h>typedef struct{int end;struct{short a;int b;};int d;}test1_t;int main(){printf(“sizeof(test1_t) = %ld\n”, sizeof(test1_t));test1_t a1;char* b1 = &a1;printf(“b1 = %d\n”, b1);b1+=1;printf(“b1 = %d\n”, b1);b1 = (原创 2021-05-28 16:22:37 · 212 阅读 · 0 评论 -
关于结构体套共用体/结构体的一点笔记
#include <stdio.h>typedef struct{ int end; union { short a; int b; }; int d;}test_t;typedef struct{ int end; struct { short a; int b; }; int d;}test1_t;int main()...原创 2021-05-26 16:33:19 · 529 阅读 · 0 评论 -
关于 const+char+* 的一点研究
分三种形式:char const *p; const char* p;char *const p;先贴一个例子:成功执行,执行结果:ptr1 =123321ptr1[0] = 1,ptr2[0] =1, ptr3[0] = 1====================================尝试通过指针ptr2,ptr3 修改ptr1指向的字符串的值。编译失败:如果通过普通指针进行修改:执行成功:...原创 2021-05-19 10:39:37 · 172 阅读 · 0 评论
分享