Loading

链接属性,存储类型,static关键字

链接属性

链接属性分为三种,external(外部),internal(内部)和none。属于internal链接属性的标识符在同一个源文件内的所有声明中都指同一个实体,但位于不同源文件的多个声明则分属不同的实体。属于external链接属性的标识符不论声明多少次、位于几个源文件都表示同一个实体。


在缺省情况下,标识符b,c和f的链接属性为external,其余标识符的链接属性则为 none。因此,如果例外一个源文件也包含了标识符 b 的类似声明并调用函数 C,它们实际上访问的是这个源文件所定义的实体。f的链接属性之所以是 extermal 是因为它是个函数名。在这个源文中调用函数 它实际上将链接到其他源文件所定义的函数,甚至这个函数的定义可能出现在某个函数库。

  • 关键字extern和 static 用于在声明中修改标识符的链接属性。如果某个声明在正常情况下具有extermal 链接属性,在它前面加上 static 关键字可以使它的链接属性变为 intermal。例如,如果第2个声明像下面这样书写:
    static int b;
    那么变量b将为这个源文件所私有。
    static 只对缺省链接属性为external 的声明才有改变链接属性的效果。例如,尽管你可以在声明前面加上 static 关键字,但它的效果完全不一样,因为e的缺省链接属性并不是 external。
    extern 关键字的规则更为复杂。一般而言,它为一个标识符指定external链接属性,这样就可以访问在其他任何位置定义的这个实体。请考虑图3.3 的例子。声明3为 指定xtermal 链接属性。这样一来,函数就可以访问在其他源文件声明的外部变量了。

存储类型


static关键字

当用于不同的上下文环境时,static关键字具有不同的意思。

posted @ 2023-06-08 16:51  zranguai  阅读(73)  评论(0)    收藏  举报