鱼C论坛

 找回密码
 立即注册
查看: 2630|回复: 6

问个问题,求解啊= 。=

[复制链接]
发表于 2013-12-23 18:14:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 全杨华 于 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                             吗????
为什么却是这样,如图: 360截图20131223181010937.jpg ???????????????我看书本说show函数中的局部变量x=111把全局变量的x=567修改了,所以第三行输出书本上显示是111,而我得到的却是567,好困惑,求解释。O(∩_∩)O

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-23 19:51:33 | 显示全部楼层
哥们儿,那估计是书本上说错了!
全局变量和局部变量在内存中的位置不同,内存中它们并不是指向同一个位置。
这个题涉及到了变量的作用域:当函数中有局部变量时,此时x是局部变量;没有局部变量时,此时x是全局变量。
x=111是个局部变量,他的作用域只是在这个show函数中,出去就不管用了。
主函数main中没有局部变量x所以此时x=567,你又定义x=3了,所以被改变的是567而不是111
明白么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-23 22:31:05 | 显示全部楼层

谢谢了,我子安在明白了,还问一个啊,就是VC++6.0中自己写的程序生成的在debug文件夹里的可执行.exe文件,点击后一闪而过,并不像VC6.0中的execute program这样弹出一个DOS窗口,为什么呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-23 22:40:08 | 显示全部楼层
全杨华 发表于 2013-12-23 22:31
谢谢了,我子安在明白了,还问一个啊,就是VC++6.0中自己写的程序生成的在debug文件夹里的可执行.exe文件 ...

程序最后  加个  getchar( );
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-23 22:44:26 | 显示全部楼层
全杨华 发表于 2013-12-23 22:31
谢谢了,我子安在明白了,还问一个啊,就是VC++6.0中自己写的程序生成的在debug文件夹里的可执行.exe文件 ...

这个你可以在最后一行加上一个getch();具体什么情况我解释不大清楚,加上getch后就会暂停,你试试
也可以加上#include <cstdlib>  这个头文件  在最后一行加上system("pause");
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-23 23:03:07 | 显示全部楼层
Ъγ:_小ツ雨oο 发表于 2013-12-23 22:40
程序最后  加个  getchar( );

可以了,谢谢啊O(∩_∩)O
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-23 23:03:42 | 显示全部楼层
maomingkun 发表于 2013-12-23 22:44
这个你可以在最后一行加上一个getch();具体什么情况我解释不大清楚,加上getch后就会暂停,你试试
也 ...

可以了,谢谢你啊,O(∩_∩)O
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 02:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表