DAY 12

今天学习内容如下: 

  1. 8.8 局部变量和全局变量
    • 局部变量:在函数内部或块内定义的变量,只在其定义的函数或块内有效。
    • 全局变量:在函数外部定义的变量,从定义位置到文件结束都有效。
    • 局部变量和全局变量的区别:作用域、存储方式和生存期不同。
    • 建议尽量少使用全局变量,以降低程序的通用性和可靠性。
  2. 8.9 变量的存储类别
    • 自动变量(auto):默认的存储类别,在进入函数或块时自动分配内存,退出时自动释放。
    • 静态变量(static):用关键字static声明,在程序运行期间一直存在,只初始化一次。
    • 寄存器变量(register):将变量存储在寄存器中,提高访问速度,但数量有限。
    • 外部变量(extern):用于在多个文件中共享变量。
  3. 8.10 内部函数和外部函数
    • 内部函数(static):只能在本文件中使用的函数。
    • 外部函数(默认):可以被其他文件调用的函数。
    • 在C语言中,预处理命令是在编译之前对程序进行特殊处理的命令,它不是C语言本身的组成部分。C语言提供的预处理功能主要有宏定义、文件包含和条件编译。

       

      一、宏定义

    • 不带参数的宏定义
      • 定义形式#define 标识符 字符串
      • 作用:在程序中用指定的标识符代替字符串,减少重复书写,提高通用性。
      • 注意事项:宏名一般用大写字母,不作正确性检查,不加分号,有效范围为定义命令之后到本源文件结束,可用#undef命令终止其作用域,可层层置换,对双撇号内的字符不进行置换,不分配内存空间。
    • 带参数的宏定义
      • 定义形式#define 宏名(参数表) 字符串
      • 展开方式:将语句中的宏名后面括号内的实参字符串代替#define命令行中的形参,若字符串中包含宏中的形参,则将程序语句中相应的实参代替形参,非参数字符保留。
      • 与函数的区别:函数调用时先求实参表达式的值再代入形参,且为形参分配临时内存单元,有类型要求,只返回一个值;而宏定义只是简单的字符替换,不分配内存单元,无类型问题,可得到多个结果,不占运行时间。
    •  

      二、文件包含

    • 定义:一个源文件将另一个源文件的全部内容包含进来。
    • 一般形式#include "文件名" 或 #include <文件名>
    • 作用:节省重复劳动,提高程序通用性。
    • 注意事项:一个#include命令只能指定一个被包含文件;被包含文件修改后,所有包含它的文件都要重新编译;文件包含可嵌套;文件名用尖括号或双撇号括起来,二者区别在于查找文件的方式不同;被包含文件与其所在文件在预编译后成为同一个文件,被包含文件中的全局静态变量在包含它的文件中有效,不必用extern声明。
    •  

      三、条件编译

    • 作用:根据条件编译不同的代码段,提高程序的通用性和灵活性。
    • 形式
      • #ifdef 标识符 程序段1 #else 程序段2 #endif:若标识符已被定义,则编译程序段1,否则编译程序段2。
      • #ifndef 标识符 程序段1 #else 程序段2 #endif:若标识符未被定义,则编译程序段1,否则编译程序段2。
      • #if 表达式 程序段1 #else 程序段2 #endif:当表达式值为真时编译程序段1,否则编译程序段2。
    •  

      本章介绍的预编译功能有利于程序的可移植性和灵活性,掌握这些功能可以使程序更加简洁、高效。

在最后我们做了一个小项目,虽然有小问题,但都被解决了,很充实。 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值