1.基本概念
- 声明(declaration):使得名字为程序所知, 一个文件如果想使用别处定义的名字则必须包含对那个名字的声明。
- 定义(definition)负责创建与名字关联的实体。
2.功能
- 变量声明规定了变量的类型和名字, 在这一点上定义与之相同;
- 变量的定义除了声明变量的类型和名字,还申请变量的存储空间,也可能会为变量赋一个初始值;
如果想声明一个变量而非定义它, 就在变量名前添加关键字extern, 而且不要显式地初始化变量:
extern int i; //声明l. 而非定义i
int j; //声明并定义
任何包含了显式初始化的声明即成为定义。我们能给由ex七ern关键字标记的变量赋一个初始值, 但是这么做也就抵消了extern的作用。extern语句如果包含初始值就不再是声明, 而变成定义了:
extern double pi = 3.1416; //定义
在函数体内部, 如果试图初始化一个由extern关键字标记的变量,将引发错误。因为在函数体的外面已经进行了定义
NOTE:文量能且只能被定义一次, 但是可以被多次声明。