全局变量的疑惑
编写一个函数swap用于交换两个整数的值#include<stdio.h>
int x,y;
void swap(int x,int y)
{
int t;
t=x;
x=y;
y=t;
}
void main()
{
scanf("%d%d",&x,&y);
swap(x,y);
printf("%d %d",x,y);
}
调用swap,同时把主调函数中的x,y传給被调函数中的x,y.互换后由主函数输出.
问什么不行,请指教谢谢!!!
红色的x,y代表相同的变量--局部变量
绿色的x,y代表相同的变量--全部变量
在c中,全局变量和局部变量可以同名,采用就近原则使用变量
函数的参数传递方式是call by value,就是他们有相同的右值(数值)
而具有不同的左值(地址空间,或者说是存储空间)
在swap()中使用的x,y是局部变量,和全局变量不同的存储空间
swap()中交换的是局部变量的值,而主函数中输出的全局变量的值
当然是不可能是交换后的值