1、编译指令:预处理,宏定义。建立自己的数据类型:结构体,联合体,动态数据结构。逻辑运算符。函数递归调用。
编译四步骤:
2、预处理:展开了头文件;进行宏替换。
(Vim指令:只进行预处理即可--- gcc hello.c -o hello.i -E;
查看源代码 :$ 直接查看最末行。
查看是否正确执行完成: echo $?)
#define R 10
宏定义:在进行预处理的时候直接进行替换,不考虑语法的(不需要分号结尾)。常用宏的场合:常量、数组buffer。
条件编译功能。。。
3、typedef 关键字,作用是给变量类型起别名。 需要注意C语法,以分号结尾。
作用域问题需要注意。
4、结构体创建的方式有三种,初始化结构体和访问结构体成员
5、共用体,结构体大小问题:
结构体大小:需要进行字节对齐,应以空间换取时间的问题。结构体变量大小的公式:等于最后一个成员的偏移量加上最后一个成员的大小和末尾的填充字节数。
结构体字节对齐准则:每个成员相对于结构体首地址的偏移量应该是当前成员所占内存的整数倍;否则编译器自动填充字节。
同时最终需要判断目前填充后的字节数是不是当前结构体最宽的变量类型的整数倍,否则在最后这个变量后面做字节填充。
共用体:最大变量所占大小,初始化的时候只可以声明一个变量值。