14th day

本文详细介绍了C语言的预处理指令,包括预处理指令的特点、C程序的编译流程,以及预处理指令的分类。重点讲解了宏定义的使用,包括无参数和带参数的宏,以及宏定义中的注意事项。同时,提到了条件编译指令的三种用法,以及它们在代码组织中的作用。此外,还讨论了`static`和`extern`修饰符在修饰局部和全局变量时的区别和应用场景。
摘要由CSDN通过智能技术生成

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个变量名,那么在使用这个宏之前必须要保证这个变量已经存在.

 </

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值