全局变量和局部变量的问题??

2025-03-23 18:05:13
推荐回答(2个)
回答1:

问题1:第二行的变量a和b是全局变量,它们的作用域自定义处到文件结束(第14行);第5行的变量a的作用域为5-7行。那么在自定义函数中,x和y变量接收到的数据分别是1和20,但自定义函数mysum中的变量a和b则是前面第二行定义的全局变量,否则会报错的,因此,该函数中输出的a+b(a++,11;b++,21)=32。你可能会问,mysum的返回值是什么?他的返回值是21,因为x和y是局部变量。
#include //1
int a=10,b=20; //2
main() //3
{int mysum(int x,int y); //4
int a=1,c; //5
c=mysum(a,b); //验证mysum函数的返回值,21
printf("c=%d\n",c); //6
} //7

int mysum(int x,int y)
{
a++;
b++;
printf("%d\n",a+b);//32
return x+y;
}
问题2:将所有x-->a,y-->b,那么在mysum函数中的a变量和b变量是局部变量了,屏蔽全局变量。这种情况才是你理解的情况。

回答2:

a++后是11,b++后是21,所以是32