C语言有4种不同类型的作用域:
代码块作用域:位于一对花括号之间的所有语句称为一个代码块, 在任意代码块内 声明 的标识符具有代码块作用域, 作用域为该标识符声明的位置到代码块结束花括号
文件作用域:一个源代码文件表示一个文件单位, 在所有代码块之外声明的标识符都具有文件作用域, 从它们声明之处到文件结尾都可以被访问到. 比如在main函数外声明的变量.
原型作用域:在函数原型(函数声明)中, 形参列表中的形参名具有原型作用域. 形参名只在形参列表中可见(两个圆括号之间).
函数作用域:简单来说, 函数作用域指的是语句标签可见范围为函数内. 由于语句标签更goto相关, 而使用goto是不好的习惯, 所以不讨论函数作用域.
C语言标识符有3种不同的链接属性:
外部链接属性:
具有external(外部)链接属性的标识符在不同源文件的均表示同一实体.
具有文件作用域的标识符在缺省存储类说明符的情况下具有external(外部)链接属性
使用extern关键字可以改变标识符的链接属性.
internal(内部)链接属性:
具有internal(内部)连接属性的标识符在同一源文件内的所有声明都指向同一实体, 但是位于不同源文件的多个声明则分属不同的实体.
正常情况下具有external(外部)链接属性的标识符使用static存储类说明符修饰后具有internal(内部)链接属性
none(无)链接属性:
none(无)链接属性的标识符的多个声明均表示不同实体.
具有代码块作用域或者函数原型作用域的标识符具有none(无)链接属性
网友评论