extern int a;是“声明”了变量a,但没分配存储空间,还不能使用。int a;定义了变量a并分配了空间,可以使用。
声明:声明和定义是有区别的。声明不等于定义,声明只是指出了变量的名字,并没有为其分配存储空间;定义指出变量名字同时为变量分配存储空间,定义包含了声明。在程序中一个变量可以声明多次,但只能定义一次。声明时不能赋初值,如果声明时有初始化值,就被当做定义了,例如:
extern int a = 5; //定义了变量a=5
后面的程序中若再出现extern int a = 5;或者int a;的语句,就会出错,因为变量只能定义一次。