为了账号安全,请及时绑定邮箱和手机立即绑定

局部与全局问题在里面大神来教一下小白啊

局部与全局问题在里面大神来教一下小白啊

C C++
闷a 2017-05-03 19:15:28
#include <stdio.h>int x = 1;int fn1(int x){int y,z;z = 2;y = x+z;printf("y=%d\n",y);这个为局部变量我知道但是为什么最后y=4它没有定义x为多少啊return 0;}int main(){fn1 (2);int y = 10;printf("x+y=%d",y+x);getchar();}
查看完整描述

3 回答

已采纳
?
ruibin

TA贡献358条经验 获得超213个赞

int x=1.x为在外层作用域,内层可以直接使用
查看完整回答
1 反对 回复 2017-05-03
  • 闷a
    闷a
    对呀那y就应该=3啦啊
  • ruibin
    ruibin
    但是,看这里fn1 (2);然后int fn1(int x)什么意思呢,定义了一个参数为x,现在你传入一个2此时函数内部的x就是2.y等于4 如果你这样写fn1() 此时x的y就等于3.
  • 闷a
    闷a
    哦哦哦对对对我真的是傻啊我去自定义函数我没有往后面想!!谢谢啦!!
?
frece

TA贡献36条经验 获得超15个赞

程序先跑main函数

在main中调用fn1,  把2 当参数传进去, 而在 fn1中, 接收一个x,这个x和全局变量x不是同一个变量, 你定义了一个z = 2, 所以y = x + z = 2 + 2 = 4

局部变量和全局变量重名的时候函数会优先使用局部变量,如果你把fn1函数定义成 fn1(int m), 函数里是 y = m + z,你就能理解了吧? 这里只不过是全局变量和局部变量重名了而已

查看完整回答
2 反对 回复 2017-05-03
  • 3 回答
  • 0 关注
  • 1631 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信