最近复习C语言基础,将extern的一些知识点总结下来
参考资料是<C和指针>第三章数据
博客转:https://blog.csdn.net/qq_27664167/article/details/82859852
1.作用域/链接属性/存储类型(<C和指针>3.5,3.6,3.7)
作用域:标识符的作用域就是程序中该标识符可以被使用的区域,具体分为代码块作用域(局部变量),文件作用域(全局变量),函数作用域与原型作用域,在此不细说
存储类型:变量的存储类型是指存储变量值的内存类型,变量的存储类型决定变量何时创建,何时销毁以及它的值将保持多久,说白了存储类型包括存储位置和生命周期,在此不细说
链接属性:标识符的链接属性(linkage)决定如何处理在不同文件中出现的标识符
链接属性一共三种,external(外部),internal(内部),none(无)
没有链接属性的标识符总是被当做单独的个体,也就是该标识符的多个声明被当做独立不同的实体(局部变量)
属于internal链接属性的标识符在同一源文件内的所有声明中都指同一个实体,但位于不同源文件的多个声明则分属不同的实体(static修饰全局变量)
属于external链接属性的标识符不论声明多少次,位于几个源文件都表示同一个实体(全局变量与函数)
2.关键字extern
关键字extern用于在声明中修改标识符的链接属性,一般而言,它为一个标识符指定ex