c语言局部变量和全局变量的问题 为什么答案是1213 求详解

 我来答
孟羽然
2016-11-16 · TA获得超过2976个赞
知道小有建树答主
回答量:1308
采纳率:70%
帮助的人:564万
展开全部
注意,在main函数中打印的都是全局变量x。而在fun1函数中打印的是它自己的局部变量x(同名)。
由上可知,打印出来的x:
第一个x:是全局变量,被初始化为1
第二个x:是fun1的局部变量,被赋值为2
第三个x:是全局变量,仍然是1,没有变化
第三个x:是全局变量,在fun2中被增加了2,变成了3.
所以,最后的答案是:1 2 1 3
追问
最后一个x为什么不是1啊 fun2又没有return 也没有在函数里面printf 这fun2也对主函数的最后一个x的输出产生了影响吗  我觉得最后一个x依旧是最上面初始化的1为什么
追答
因为在fun2中没有定义x,所以fun2中的x就是直接访问全局变量。

x += 2就是 x = x + 2 = 1 + 2 = 3
在这里全局变量已经被修改为3了
即便返回到了main函数以后,全局变量x仍然是3。
cp3pul
2016-11-16 · TA获得超过1466个赞
知道小有建树答主
回答量:824
采纳率:92%
帮助的人:179万
展开全部
对应函数fun1来说,x是局部变量,只归属于这个函数,对全局的x不会有影响,就是说,这个x只是名字相同,在内存中的位置是不一样的。
对于fun2来说,其操作的就是全局的x对全局都会有影响,所以最终的打印结果是1 2 1 3
追问
fun函数它的结果 传不传出来 是看什么啊
追答
看操作的数啊,你在fun函数里面操作的数是全局的,就会改变全局的变量,但是如果只是局部变量,那么这个变量就仅仅是在这个函数内起作用,对函数外不会有影响
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式