變數的定義和宣告的區別詳解
阿新 • • 發佈:2019-01-02
感言:我馬上大三了,對計算機也算是有點感興趣,但一直以來我對變數的定義和宣告都很模糊,最開始看書上是這樣講的:定義-->就形如 int a;這就是定義了一個整形變數,然後就說變數的定義只能是一次而宣告卻可以多次,然後就沒,我也問了好幾個老師,他們也都是這樣說的,我在網上搜的答案也感覺講得不是很細,所以我總覺得這不是我想要的答案,直到我看了<<C陷阱與缺陷>>後才明白了原來裡面還是有很多值得深挖的地方,所以分享給大家,我的所以的例子都是在VC6.0下實驗的,先來看第一個例子:
1:
2:void main() { extern int a;//定義和宣告不能放在同一個函式裡 int a=10; //再定義a=10錯誤 cout<<hex<<&a<<endl; }
extern int a;//這是宣告
void main()
{
int a=10; //(這是定義)並且這樣定義是對的
cout<<hex<<&a<<endl;
}
3:void main()
{
extern int a;//宣告
cout<<hex<<&a<<endl;//這說明宣告是不佔記憶體空間的,所以這個取地址是錯誤的
}
4:5:extern int a=10;//全域性的宣告佔記憶體空間 void main() { cout<<a<<endl; cout<<hex<<&a<<endl; }
void main()
{
extern int a=10;//在函式體內宣告不能被初始化
cout<<a<<endl;//這是一個錯誤的表示式
}
6:extern int a;//說明宣告可以宣告多次,而定義卻只能定義一次
extern int a;
extern int a;
void main()
{
int a=10;
cout<<a<<endl;
}