c语言局部变量和全局变量的问题 为什么答案是1213 求详解
2个回答
展开全部
注意,在main函数中打印的都是全局变量x。而在fun1函数中打印的是它自己的局部变量x(同名)。
由上可知,打印出来的x:
第一个x:是全局变量,被初始化为1
第二个x:是fun1的局部变量,被赋值为2
第三个x:是全局变量,仍然是1,没有变化
第三个x:是全局变量,在fun2中被增加了2,变成了3.
所以,最后的答案是:1 2 1 3
由上可知,打印出来的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。
展开全部
对应函数fun1来说,x是局部变量,只归属于这个函数,对全局的x不会有影响,就是说,这个x只是名字相同,在内存中的位置是不一样的。
对于fun2来说,其操作的就是全局的x对全局都会有影响,所以最终的打印结果是1 2 1 3
对于fun2来说,其操作的就是全局的x对全局都会有影响,所以最终的打印结果是1 2 1 3
追问
fun函数它的结果 传不传出来 是看什么啊
追答
看操作的数啊,你在fun函数里面操作的数是全局的,就会改变全局的变量,但是如果只是局部变量,那么这个变量就仅仅是在这个函数内起作用,对函数外不会有影响
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询