标识符作用域:是一个标识符在程序中可以有效访问的区域,分类:代码块作用域,函数原型作用域,或者文件作用域。
代码块作用域(局部变量):即在一个代码块中可以有效访问的标识符。(代码块:包含在一对花括号中的一段代码)在代码块中定义的变量具有代码块作用域,从该变量被定义开始到代码块末尾 变量均可访问。函数形参隶属于函数体代码块。
函数原型作用域:即在一个函数声明中可以有效访问的变量。它从变量定义处一直到原型声明末尾,所以编译器在处理函数原型时,它只关心参数类型,这就是为什么在声明函数原型参数时可以省略变量名的原因,除变长数组参量。
文件作用域:(全局变量):一个在所有函数之外定义的变量具有文件作用域,这个变量从它定义处到包含该定义的文件结尾处均可以被有效访问。
标识符链接:主要用于处理多次声明相同的标识符名称后,如何判断这些标识符是否是同一个。分类 :空链接(具有代码块作用域或者函数原型作用域的变量具有空链接属性,即变量是由其定义所在的代码块或函数原型所私有),内部链接与外部链接(具有文件作用域的变量可能有内部或者外部链接)一个具有外部链接的变量可以在一个多文件程序的任何使用。一个具有内部链接的变量可以在一个文件的任何地方使用,用标识符static指明,如没有指明则为外部链接。
存储时期:静态存储时期:具有文件作用域(于链接属性无关)的变量具有静态存储时期属性,它在程序执行期间一直存在。自动存储时期:具有代码块作用域的变量一般具有自动存储时期,在程序进入定义它的代码块时将为它分配内存空间,当退出这个代码时,分配的内存将被释放
存储类 | ||||
存储类 | 存储时期 | 作用域 | 链接 | 声明方式 |
自动 | 自动 | 代码块 | 空 | 代码块内 |
寄存器 | 自动 | 代码块 | 空 | 代码块内,使用关键字register |
具有外部链接的静态 | 静态 | 文件 | 外部 | 所有函数之外 |
具有内部链接的静态 | 静态 | 文件 | 内部 | 所有函数之外,使用关键字static |
空链接的静态 | 静态 | 代码块 | 空 | 代码块内,使用关键字static |
|