学习目标:
难的咱也看不懂,先把简单的看了再说,加油L 冲冲冲!
学习时间:
2020年10月30日
学习产出:
结构体(位段)struct
枚举 enum
联合体 union
union {
int a;
float b;
char c[4];
}x = {5};
联合体可以被初始化,但这个初始化值必须是联合体第一个变量成员的类型,而且它必须位于花括号内
常用的宏:
_ _ FILE _ _ :文件名称
_ _ LINE_ _ :代码所在行
_ _ DATE _ _ :当前日期
_ _ TIME_ _ :当前时间
_ _ STDC_ _:如果遵循ANSI C,值为1,否则未定义
随机数:
srand((unsigned int)time(NULL));
rand()%16;
上述可以获取到以时间为种子,16内的随机数
两个操作数都是指向有限定符或无限定符的相同类型的指针,左边指针所指向的类型必须具有右边指针所指向类型的全部限定符才可以被赋值,不然编译会有报错
gcc 只编译不链接
switch语句中case和default的顺序可以是任意的,如果某个case语句后面不加break,程序就会依次执行下去
可以用其他类型说明符对宏类型名进行扩展,但对typedef所定义的类型名却不能
eg:
#define peach int
unsigned peach i; 没问题
typedef int banana;
unsigned banana i; 错误,非法
编码阶段:
- 预处理阶段:根据‘#’开头的命令,将所有内容展开,并把它直接放到程序中
- 编译阶段:检查代码规范性,是否有语法错误,无误之后转换为汇编语言
- 汇编阶段:将编译阶段产生的‘xxx.s’文件转换为目标文件‘xxx.o’的二进制代码
- 链接阶段:去系统默认的路径目录下去寻找类似于‘xxx.so’的库文件,以便于链接对应的函数