分类: C/C++
2014-04-23 10:13:20
变量的定义用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且只有一个定义。声明用于向程序表明变量的类型和名字。定义也是声明:当定义边变量时我们声明了它的类型和名字。不定义变量的声明包括对象名、对象类型和和对象类型前的extern:
extern int i;//声明但未定义
int i;//声明并且定义
extern 声明不是定义,也不分配存储空间。事实上,它只是说明变量定义在程序的其他地方。一个程序中的变量可以有多次声明,但只能有一次定义。
只有当extern位于函数外部时,才可以含有初始化式:
extern double pi = 3.1415;//声明也是定义
因为已经初始化的extern声明被当作定义,所以随后的定义也是错误的,例如:
extern double pi = 3.1415;
double pi;//错误,因为重复定义了
同样,随后的含有extern的初始化式也是错误的,例如:
extern double pi = 3.1415;//声明也是定义
extern double pi;//只是声明,可以,因为程序中一个变量可声明多次
extern double pi = 3.1415;//不可以,带初始化的extern声明也相当于定义,已经定义过一次了