为了让多个文件访问相同的变量,C++区分了声明和定义
1.变量的定义用于为变量分配存储空间,还可以为变量指定初始值,在一个程序,变量有且仅有一个定义
2.声明用于想程序表明变量的类型和名字
定义也是声明 :当定义变量时我们声明了它的类型和名字,只有定义才分配存储空间。
可以通过使用extern关键字声明变量名而不定义它,不分配存储空间。它只说明变量定义在程序的其他地方。程序中变量可以声明多次,但只能定义一次。
extern int i; //声明但不定义
int i; //声明并定义
extern double pi = 3.14.15 //即使声明标记为extern,只能当作定义。只有当extern声明位于函数外部时,才可以含有初始化式。
在C++中,变量必须且仅能定义一次,而且在使用变量之前必须定义或声明变量。
任何在多个文件中使用的变量都需要有与定义分离的声明。在这种情况下,一个文件含有变量的定义,使用该变量的其他文件则包含该变量的声明。
--------------------------------------------------------------------------------------------------
一般,名字从其声明点开始直到其声明所在的作用域结束处都是可见的。C++中,大多数作用域使用花括号来界定的。
当局部变量与全局变量名相同时,在局部范围内,局部变量屏蔽了全局变量。
通常把一个对象定义在它首次使用的地方是一个很好的办法。
放置声明的一个约束是,变量只在从其定义处开始到该声明所在的作用域的结束处才可以访问。必须在使用该变量的最外层作用域里面或之前定义变量。