extern int a;是“聲明”了變量a,但沒分配存儲空間,還不能使用。int a;定義了變量a并分配了空間,可以使用。
聲明:聲明和定義是有區別的。聲明不等于定義,聲明只是指出了變量的名字,并沒有為其分配存儲空間;定義指出變量名字同時為變量分配存儲空間,定義包含了聲明。在程序中一個變量可以聲明多次,但只能定義一次。聲明時不能賦初值,如果聲明時有初始化值,就被當做定義了,例如:
extern int a = 5; //定義了變量a=5
后面的程序中若再出現extern int a = 5;或者int a;的語句,就會出錯,因為變量只能定義一次。