变量的定义为变量分配地址和存储空间,告诉编译器建立变量并分配存储空间,并且给变量一个指定的初始值
int a = 10;//在这个例子中,我们先声明了一个整型变量a,紧接着又为它分配了4个字节的内存空间,并将初始值设为10。
变量的声明不分配地址,用于向程序表明变量的类型和名字
int A; //是声明,声明了A为整型的外部变量,但是这一声明并没有为A分配内存,也没有给它赋值,只是告诉编译器我们将在程序中用到它。
一个变量可以在多个地方声明, 但是只在一个地方定义。 定义也是声明,当定义变量时我们声明了它的类型和名字。
extern关键字
加入extern 修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。如果在多个代码文件中对同一个变量进行多次定义可能会导致重复定义的问题。为了避免这个问题,C++提供了extern关键字,可以用于在不同的代码文件之间共享变量.
int main()
{
extern int A;
//这是个声明而不是定义,声明A是一个已经定义了的外部变量
//注意:声明外部变量时可以把变量类型去掉如:extern A;
}
//如果声明有初始化式,就被当作定义,即使前面加了extern
extern double pi=3.141592654; //定义,只有当extern声明位于函数外部时,才可以被初始化。
int A;//是定义,定义了A为整型的外部变量
变量声明与定义的顺序
在程序中声明的变量,其作用域在当前的花括号{}内有效。变量的作用域可以控制变量访问的范围,在程序中,我们要先声明变量,再定义,或者同时声明和定义变量。
避免重复定义
重复定义可能会导致程序出现编译错误,因此需要避免重复定义同一变量。在每个相关的代码文件中只定义一次变量,然后在其他文件中使用extern关键字声明变量,确保程序编译时只有一个实例。
初始化变量
如果变量没有初始值,它将包含有系统存储在该位置上的任意值。大多数C++编译器会在未初始化变量中设置为0