问个问题,求解啊= 。=
本帖最后由 全杨华 于 2013-12-23 18:17 编辑#include <stdio.h>
int x=567;
void show()
{
int x=111;
printf("x的值为:%d\n",x);
}
int main()
{
printf("x的值为:%d\n",x);
show();
printf("x的值为:%d\n",x);
x=3;
printf("x的值为:%d\n",x);
return 0;
}
这段程序执行后输出不应该是: x的值为567
x的值为111
x的值为111
x的值为3 吗????
为什么却是这样,如图:???????????????我看书本说show函数中的局部变量x=111把全局变量的x=567修改了,所以第三行输出书本上显示是111,而我得到的却是567,好困惑,求解释。O(∩_∩)O
哥们儿,那估计是书本上说错了!
全局变量和局部变量在内存中的位置不同,内存中它们并不是指向同一个位置。
这个题涉及到了变量的作用域:当函数中有局部变量时,此时x是局部变量;没有局部变量时,此时x是全局变量。
x=111是个局部变量,他的作用域只是在这个show函数中,出去就不管用了。
主函数main中没有局部变量x所以此时x=567,你又定义x=3了,所以被改变的是567而不是111
明白么? maomingkun 发表于 2013-12-23 19:51 static/image/common/back.gif
哥们儿,那估计是书本上说错了!
全局变量和局部变量在内存中的位置不同,内存中它们并不是指向同一个位置 ...
谢谢了,我子安在明白了,还问一个啊,就是VC++6.0中自己写的程序生成的在debug文件夹里的可执行.exe文件,点击后一闪而过,并不像VC6.0中的execute program这样弹出一个DOS窗口,为什么呢? 全杨华 发表于 2013-12-23 22:31 static/image/common/back.gif
谢谢了,我子安在明白了,还问一个啊,就是VC++6.0中自己写的程序生成的在debug文件夹里的可执行.exe文件 ...
程序最后加个getchar( ); 全杨华 发表于 2013-12-23 22:31 static/image/common/back.gif
谢谢了,我子安在明白了,还问一个啊,就是VC++6.0中自己写的程序生成的在debug文件夹里的可执行.exe文件 ...
这个你可以在最后一行加上一个getch();具体什么情况我解释不大清楚,加上getch后就会暂停,你试试
也可以加上#include <cstdlib>这个头文件在最后一行加上system("pause"); Ъγ:_小ツ雨oο 发表于 2013-12-23 22:40 static/image/common/back.gif
程序最后加个getchar( );
可以了,谢谢啊O(∩_∩)O maomingkun 发表于 2013-12-23 22:44 static/image/common/back.gif
这个你可以在最后一行加上一个getch();具体什么情况我解释不大清楚,加上getch后就会暂停,你试试
也 ...
可以了,谢谢你啊,O(∩_∩)O
页:
[1]