运算符优先级
转载:C语言运算符优先级(超详细)_yuliying的博客-CSDN博客
a+++b
- (a++) + b
例题:
a=0 b=1 c=2 d=3
a+++b+c+++d++
=(a++)+b+(c++)+(d++) ----->>这一步是因为运算符优先级
=0+1+2+3-------->>这一步是因为前后自增先返回地址再自增
const和指针
转载:C语言 const和指针_guanjianhe的博客-CSDN博客
常量指针
- 指针指向的内容是常量
- 不能通过这个指针改变变量的值
const int *p;
int const *p;
指针常量
- 指针本身是个常量,不能再指向其他地址
- 但是地址中保存的数值是可以改变的
int *const p;
区分常量指针和指针常量
关键在于*的位置
- const 在*的左边--->>常量指针
- const在*的右边---->>指针常量
巧记法:*读作指针,const读作常量
- int *【指针】const【常量】 p; --->> 指针常量
- const【常量】 int *【指针】p; ------>> 常量指针
- int const【常量】*【指针】p;----->>常量指针
函数传参所占空间
数组形参
- 4字节
引用形参
- 传过去的是整个目标的空间
结构体对齐
概念
- 自身对齐值:数据类型本身的对齐值,例如char类型的自身对齐值是1,short类型是2;
- 指定对齐值:数据类型本身的对齐值,例如char类型的自身对齐值是1,short类型是2;
- 有效对齐值:自身对齐值和指定对齐值中较小的那个。
规则
- 不但结构体的成员有有效对齐值,结构体本身也有对齐值,这主要是考虑结构体的数组,对于结构体或者类,要将其补齐为其有效对齐值的整数倍。结构体的有效对齐值是其最大数据成员的自身对齐值;
- 存放成员的起始地址必须是该成员有效对齐值的整数倍。
速算法:
- 结构体内成员自身对齐值的和<sizeof(结构体)<成员中最大的整数倍
函数参数
实参
种类
- 常量
- 变量
- 表达式
- 函数
形参
种类
- 变量
- 函数指针