标识符的作用域、可见性
作用域
全局作用域
全局变量(全局区)
全局变量定义时未初始化,以位模式清零,则值为0
作用域
可在整个作用域使用,不需要二次定义,但下面这种用法不推荐,一般使用参数传参
局部作用域
全局变量(栈区)
比如函数的形参。。
变量生存期
静态生存期
比如一个全局变量,从定义开始到程序结束才被销毁。
动态生存期
如局部变量从定义开始到局部作用域结束被销毁。
static:
修饰一个局部变量
如下图中i在static成为一个静态变量,初始值为0,生存期为静态。
输出11 12(初始化只进行一次)
修饰一个全局变量
static修饰一个全局变量或者函数,限制变量使用范围,表示此全局变量只在此文件有用。
可见性
1.标识符必须先定义再使用
2.同一作用域中不得出现同名标识符
3.在没有包含关系的不同作用域中定义的同名标识符互不影响
4.在两个或多个具有包含关系中声明的同名标识符,外层标识符在内层不可见
、
aotu:
定义变量时隐含,自动开辟空间与销毁
register:
建议编译器把变量放在寄存器中,提高执行效率。
寄存器不能寻址,取地址会报错。
extern
在头文件中声明加上extern。
预处理命令(文本替换)
宏定义
宏名通常大写,以便于和变量区分开
系统自带:
不带参
当前行数
当前文件名
带参
类似函数,但方法不同。
结果为20