C语言深度剖析
文章平均质量分 95
是冬至呀
I'm becoming better!
展开
-
自定义类型:结构体、联合体、枚举
1、结构体内存对齐规则:①:结构体第一个成员对齐到和结构体变量起始位置偏移量为0的地址②:其他成员对齐到对齐数的整数倍处(偏移量为对齐数的整数倍)③:对齐数:成员自身类型的大小与编译器默认对齐数的较小值(vs默认对齐数为8,Linux无默认对齐数,对齐数就是自身成员的大小)④:结构体总大小是最大对齐数的整数倍⑤:如果嵌套了结构体的情况,嵌套的结构体成员对齐到自己成员中最大对齐数的整数倍处,结构体的整体大小就是最大对齐数的整数倍⑥:如果结构体成员中有数组,char[5]当做5个char存放,原创 2024-04-03 10:00:00 · 2716 阅读 · 1 评论 -
指针和数组
所有数组传参,一定发生降维,降维成指向其内部元素类型的指针,换言之,指针与数组在访问多个连续的元素的时候,既可以采用指针解引用方案,也可以采用[ ]的方案char p[2][3][4][5],离变量名(p)最近的维度([2])决定一维数组p元素的个数,剩下(char [3][4][5])的是数组内容原创 2024-04-01 10:00:00 · 838 阅读 · 0 评论 -
C语言深度剖析(六)
预处理:头文件展开,去注释,宏替换,条件编译编译:将二进制语言翻译成汇编语言汇编:将汇编语言翻译成二进制文件(可重定向文件【可被链接,不可被执行】)链接:自身程序+库文件进行关联,形成可执行程序原创 2024-03-25 10:00:00 · 2165 阅读 · 0 评论 -
C语言深度剖析(伍)
一般,在32位下,寄存器的位数是32位。 可是,你的char类型数据,只有8比特位。读到寄存器中,只能填补低8位,那么高24位呢? 就需要进行“整形提升”。整型提升的规则:1、对于无符号数,直接高位补0即可2、对于有符号数,在高位补符号位(按照补码的最高位补位,补码最高位【最左边的一位】为0就补0,为1就补1)原创 2024-03-18 10:30:00 · 1158 阅读 · 1 评论 -
C语言深度剖析(肆)
结论: volatile 忽略编译器的优化,保持内存可见性。const要求你不进行写入就可以,volatile要求每次都从内存中读取数据,两者并不冲突虽然volatile就叫做易变关键字,但这里仅仅是描述它修饰的变量可能会变化,要编译器注意,并不是它要求对应变量必须 变化!这点要特别注意。原创 2024-03-17 09:44:39 · 1738 阅读 · 4 评论 -
C语言深度剖析(叁)
goto关键字使用注意事项:goto语句只能用于在当前函数内部进行跳转,不能跨函数或跳出函数。原创 2024-03-12 10:08:54 · 1096 阅读 · 1 评论 -
C语言深度剖析(壹)
定义:用于开辟空间存贮变量,只能有一次。声明:用于告知,不开辟空间,可以有多次。声明关键字:extern声明变量时必须带extern,函数声明时建议带extern声明:extern int g_val;(不能赋初始值,因为声明并没有开辟空间) 函数 void show();声明:extern void show();函数 void show (int x);声明:extern void show(int x)(怎么定义怎么声明,定义与声明必须严格一致)。原创 2024-03-03 15:49:02 · 1071 阅读 · 1 评论 -
C语言深度剖析(贰)
switch语句结构中,case完成判定功能,break完成分支功能,default处理异常情况case:执行语句 = 1:多,多条语句不能定义变量如需定义①:用{ }括起来②:封装成函数,进行函数调用case:执行语句 = 多:1,多条case后不加breakdefault可以放在任何地方,推荐放在最后case后的整型不能是:const int a = 10, case a:(a不是真正的常量,可以间接修改【后面在const关键字会讲到】)原创 2024-03-09 14:29:30 · 927 阅读 · 3 评论