一.标识符的作用域与可见性
1.标识符:指标识符绑定的实体在一个程序中有效部分或者代表一个标识符的作用范围。
2.可见性:指程序在某个地方是否能被引用和访问。
四个注意
1.标识符必须先定义再使用
2.在同一作用域中不得定义同名称标识符
3.在没用包含关系的作用域中定义的同名标识符互不影响
4.在俩个或者俩个具有包含关系的不同作用域中定义同名标识符,外层标识符在内层不可见(就近原则)
二.局部变量和全局变量
局部作用域,也称局部变量,在花括号中的,若未被定义则为随机数
全局作用域,也称全局变量,在静态区(全局区),在花括号外的,若未初始化系统会自动清零。
三.变量的生存期
即从诞生到销毁的时间
1.静态生存期:指在程序运行期间由系统分配的储存空间的方式,与程序运行周期相同。全局变量和被static修饰的变量都有静态生存期
2.动态生存期:是在程序运行期间根据需要进行的动态的分配储存空间的方式。
四.
1.自动变量(auto变量)
在调用该函数时,系统会给这些变量分配存储空间,在函数调用结束时自动释放这些存储空间。因此这些局部变量称为自动变量。实际上,关键字auto可以省略,不写auto则隐含指定为“自动存储类别”,它属于动态存储方式。在函数定义的变量都没有声明为auto,其实都隐含指定为自动变量。。
2.static
(1.静态修饰该变量的生存期
(2.在全局变量或者函前面加static,使只能在本.c中使用
3.register
为了提高程序执行效率,允许将局部变量放在CPU中的寄存器中,需要时直接从寄存器取出参数参与运算,不必再转去内存中存取。由于对寄存器的存取速度远高于对内存的存取速度,故可提高执行效率。这种变量叫寄存器变量,用关键字register声明。
4.extern
全局变量都是存放在静态存储区中的。因此他们的生存期是固定的,存在于程序的整个运行过程。
在引用前用关键字extern对该变量作外部变量声明,表示把该变量的外部作用域扩展到此位置。
五.多文件编译
1.vsp 垂直分屏幕
2.set mouse=a 移动鼠标
六.预处理
预处理:文本替换
gcc - E main . c 要求gcc只做预处理不编译,将预处理后的结果放在main . c 里面
七.宏定义
#define 标识符 字符串 不带参数的宏定义
#define 宏名(参数表)字符串 带参数的宏定义,加括号,避免运算优先级破坏宏。
八.条件编译
t调试
#if0
...
#endif
避免头文件多次包含造成编译错误
#iifned _ 文件名_
#define _文件名_
.....
#endif