1. 自动变量(auto可缺省):只有当程序执行到自动变量作用域时才为自动变量分配内存空间, 函数执行结束后自动释放该空间
视频18:54
2. 静态变量(static):从定义到程序执行结束前一直占用内存空间, 不会随着函数结束而结束, 只有程序执行完之后才会释放空间
3. 寄存器变量(register):能够提高运算速度, 从寄存器中伛数据比内存中读取快
(1)只有自动变量可以是寄存器变量,全局和静态不行
(2)函数调用时占用寄存器,结束时释放
(3) 寄存器数目有限, 不能使用太多, 如果寄存器使用饱和, 程序将自动转为自动变量处理
(4) 只限于int,char和指针类型
4. 全局变量:extern声明能够让多个文件引用, static声明只能单个文件调用
5. 宏定义:实际上就是给字符串重新定义一个名称或标识符来代替这一串字符串, 在编译预处理时将标识符替换成字符窜。
(1)一般用于当程序中多处地方需要调用到这个标识符时才需要定义, 提高程序可读性, 便于调试和程序的移植
(2)define / undef, 双引号扩起来的字符串内的字符不进行宏替换操作
define 标识符(参数表) 字符串
(3)带参数的宏比用函数有更高的执行效率, 因为函数调用在程序运行时执行, 而宏替换只在编译预处理阶段进行
6. 文件包含(#include):一个源程序文件可包含另外一个文件的全部内容
(1)#include <文件名>, 在头文件所在目录中寻找文件, 文件中定义说明了一些函数的用途
(2)#include "文件名", 当前目录下寻找->path命令自动搜索路径查找->头文件所在目录查找, 效率较低
(3)如果有嵌套文件包含, 则需要按最后包含的文件按顺序进行include说明