感言:我马上大三了,对计算机也算是有点感兴趣,但一直以来我对变量的定义和声明都很模糊,最开始看书上是这样讲的:定义-->就形如 int a;这就是定义了一个整形变量,然后就说变量的定义只能是一次而声明却可以多次,然后就没,我也问了好几个老师,他们也都是这样说的,我在网上搜的答案也感觉讲得不是很细,所以我总觉得这不是我想要的答案,直到我看了<<C陷阱与缺陷>>后才明白了原来里面还是有很多值得深挖的地方,所以分享给大家,我的所以的例子都是在VC6.0下实验的,先来看第一个例子:
1:
void main()
{
extern int a;//定义和声明不能放在同一个函数里
int a=10; //再定义a=10错误
cout<<hex<<&a<<endl;
}
2:
extern int a;//这是声明 void main() { int a=10; //(这是定义)并且这样定义是对的 cout<<hex<<&a<<endl; }
3:
void main() { extern int a;//声明 cout<<hex<<&a<<endl;//这说明声明是不占内存空间的,所以这个取地址是错误的 }
4:
extern int a=10;//全局的声明占内存空间 void main() { cout<<a<<endl; cout<<hex<<&a<<endl; }
5:
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; }
总结:举了怎么多例子,如果你以前也和我一样对声明和定义有点模糊,相信你应该有所了解了吧,但我其实还有一点没有想明白为什么全局的声明就可以赋值并且有内存空间,可能是编译器给我们做了手脚,但教科书上是这样说的:变量的定义只能被定义一次,而声明可以是多次,记住这一点很重要!
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-08-12 17:32:33