P320 课程介绍与知识点回顾14
1. 指向函数的指针.
1). 我们可以定义1个指针指向1个函数.
来使用这个指针间接的调用这个函数.
2). 指向函数的指针的声明
a. 拷贝函数头,去掉函数名 用小括号代替 里面写上 *指针名.
3). 初始化
函数名就代表函数的地址
直接将函数名赋值给指针
4). 使用.
a. pFun();
b. (*pFunc)();
2. 结构体.
1). 作用: 可以让程序员新创建1个数据类型. 这个数据类型的变量是由多个其他普通类型的小变量联合而成的.
2). 使用场景: 当我们要存储1个数据的时候,发现这个数据是由多个其他的小数据组合起来的
3). 使用结构体来创建1个新的数据类型.
struct 新类型名称
{
成员;
};
4). 声明结构体类型的变量.
struct 新类型名称 变量名;
5). 初始化.
a. 使用点 .
b.
-------
值传递.
3. 枚举
1).可以让程序员新创建1个数据类型. 这个数据类型的变量的取值被限定.
2).使用场景: 如果1个变量的取值要被限定.
3).如何使用枚举来新创建1个类型.
enum 新类型
{
枚举值1,枚举值2....
};
4).声明变量.
enum 新类型 变量名;
5). 初始化
变量中只能存储枚举类型中写好的枚举值之一.
--------
a. 每1个枚举值都有1个对应的整型的数 默认从0开始 依次的递增
4. typedef .
1). 将1个已经存在的数据类型取1个别名.
2).枚举,结构体的定义简化~
P321 预处理指令概述
1. 预处理指令的特点
1). 都是以#开头.
2). 预处理指令都是在编译之前执行.
3). 预处理指令后面都没有分号.
2. C程序从编写到编译、链接、执行的一个流程.
1). 新创建1个.c的源文件. .c的文件是C程序的源文件.
2). 在.c的源文件中写上符合C语法规范的源代码.
a. C语言严格区分大小写.
b. 除了字符串常量, 其他的地方必须使用英文输入法.
3). 使用cc -c 指令去编译源文件
格式: cc - c 源文件名称
编译做的事情.
a. 先执行源文件中的预处理指令.
如果有文件包含指令,就将文件的内容拷贝到写指令的地方.
....
b. 检查.c文件中的语法是否符合规范.
b.1 如果符合: 生成.o目标文件. 就是.c文件对应的二进制指令.
b.2 如果不符合语法规范. 就报错. 不会生成.o的目标文件.
4). 链接
cc xx.o
a. 为.o的目标文件添加启动代码.
b. 链接函数. 告诉编译器,要调用的函数在什么地方.
调用的时候,去正确的地方找实现.
c. 链接成功以后. 就会生成1个可执行文件.
这个文件就是我们程序了.
.c源文件: 132字节.
3. 预处理指令的分类.
1). 文件包含指令 #include
2). 宏定义: 可以将1段C代码定义为1个标识,使用这个标识就可以使用这段代码.
3). 条件编译指令: 只编译指定的C代码为二进制指令.
P32203宏定义的基本使用
1. 宏定义.
1). 它是1个预处理指令.所以它在编译之前执行.
2). 作用: 可以为1段C代码定义1个标识.如果你要使用这d段C代码.那么你就使用这个标识就可以了.
3). 语法:
#define 宏名 宏值
#define N 10
4). 如何使用宏.
在C代码中.直接使用宏的名称就可以了.
int a = N + 1;
5). 宏的原理
在预编译的时候,就会执行源文件中的预处理指令.
会将C代码中使用宏名的地方替换为宏值.
将C代码中的宏名替换为宏值的过程叫做 宏替换/宏代换.
P323 无参数的宏的使用
2. 在使用宏的时候需要注意的地方.
1). 宏值可以是任意的东西.
在定义宏的时候,并不会去检查语法.
2). 无论宏值是什么东西,在定义宏的时候,不会去检查语法
只有当完成了宏替换的时候,才会去检查替换以后,是否符合语法规范.
3). 如果宏值是1个表达式,那么宏值并不是这个表达式的结果,而是这个表达式本身.
4). 如果宏值中包括1个变量名,那么在使用这个宏之前必须要保证这个变量已经存在.
</