我认为链接属性是针对具有文件作用域的变量。因为具有代码块作用域和函数原型作用域的变量离开那个地方就不能使用变量名调用了。所以说的都是具有文件作用域的变量即全局变量。
c语言一个工程可以有多个.c和.h文件,那么如果在不同的文件有相同的变量名字,或者函数名字,那么到底是一个实体,还是不同的实体呢。链接属性就是解决这个的。确定了链接属性,就可以当多个文件有相同的标识符时确定是一个实体还是多个不同的实体。
c语言中三种链接类型。分别是无链接,内部链接,外部链接。
无链接就是用来描述具有代码块作用域和函数原型作用域的变量。这些变量不参数链接。
内部链接,就是说一个具有文件作用域的变量被static关键词修饰,这是这个文件作用域类型的变量的链接属性是内部链接,只能在当前文件使用,当别的文件链接到一个同名的标识符时,两个标识符表达的是不同的实体。对应的内存不同。
外部链接,就是说一个有文件作用域类型的变量在链接时,如果多个文件都有同名的标识符,则这些标识符对应的是同一个实体,对应的是同一块内存。
一个有文件作用域的标识符缺省是外部链接(全局变量和函数名),可以通过static修饰使此变量和函数只能在此文件使用,别的文件出现同名的也是不同的实体。
如果在一个文件中想要访问另一个文件中的具有文件作用域的具有外部链接的变量,就可以在此文件用extern修饰一下变量,表明,这个变量是其他文件的,我要用那个文件当中的这个变量。这就实现了跨文件访问。