C Primer Plus阅读–章节12
三个概念:作用域、链接、存储期
-
作用域
- 块作用域:定义在块中的变量具有块作用域
- 函数作用域:仅用于goto语句的标签,即使一个标签首次出现在函数的内层块中,作用域也延申至整个函数。
- 函数原型作用域:函数的形参列表
- 文件作用域:变量定义在函数的外面,具有文件作用域从它的定义到文件末尾均可见
-
链接:
- 外部链接:函数外部定义,没有使用static,在其他.c文件中使用关键字extern的一些变量。
- 内部链接;使用static定义在函数外部的变量。
- 无链接:具有块作用域、函数作用域和函数原型作用域的变量。
注意:外部链接的文件作用域简称为“全局作用域”或者“程序作用域”, 将内部链接的文件作用域称为“文件作用域”
-
存储期:
- 静态存储期:执行期间一直存在,无论内外部链接(文件作用域变量,static表示的是链接属性)
- 线程存储期:从声明到线程结束一直存在(以关键字_Thread_local声明对象时,每个线程都会获得该变量的私有备份)
- 自动存储期:块作用域,退出块就释放内存
- 动态分配存储期: