C++ 变量的声明与定义
为了支持分离式编译,C++语言将变量的声明
和定义
分离开。
变量的声明
是指使一个变量能够被程序的其他部分可见,但是并没有为变量开辟存储空间。变量的定义
是指创建一个与变量相关联的实体,在变量定义
时,为变量开辟存储空间。
举个例子,在以下的一行代码中,我们声明并定义
了了一个int类型的变量a。因为,在这一行代码中即使int类型的变量a使程序的其他部分可见,又为变量a开辟了存储空间。
int a;
当我们只想声明
一个变量而不需要定义
它时,可以使用extern
关键字:
extern int a;
在上面的这一行代码中,我们只是声明了一个变量a来“告诉”程序的其他部分有一个int类型的变量叫做a,这个变量a可能定义
在其他的文件中。但是,我们并没有为这个变量分配存储空间。
当我们为一个被extern
修饰的全局变量赋初值时:
extern int a = 10;
extern
所产生的效果自动取消,相当于声明
并定义
了一个int类型的变量a。所以上面的这行代码与以下的代码相同:
int a = 10;
但是,当我们为extern
修饰的全局变量赋初值时,编译器会给出警告。而当我们为extern
修饰的局部变量赋初值时,编译器会直接报错。
一个变量可以被声明
多次,但是它只可以被定义
一次。