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

#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();

}


闷a
浏览 1665回答 3
3回答

ruibin

int x=1.x为在外层作用域,内层可以直接使用

frece

程序先跑main函数在main中调用fn1,  把2 当参数传进去, 而在 fn1中, 接收一个x,这个x和全局变量x不是同一个变量, 你定义了一个z = 2, 所以y = x + z = 2 + 2 = 4局部变量和全局变量重名的时候函数会优先使用局部变量,如果你把fn1函数定义成 fn1(int m), 函数里是 y = m + z,你就能理解了吧? 这里只不过是全局变量和局部变量重名了而已
打开App,查看更多内容
随时随地看视频慕课网APP