#include
void exchange(int x,int y)
{int t;
t=x;
x=y;
y=t;
}
main()
{int a,b;
printf("Input a,b:");
scanf("%d,%d",&a,&b);
exchange(a,b);
printf("a=%d,b=%d\n",a,b);
}
运行程序如下:
Input a,b:6,9
a=6,b=9
为什么形参的交换不能引起实参的变化呢?另外教材写了两个原因:
1.实参和形参各占有不同的存储单元。所以在被调函数中若改变了形参的值,并不会影响实参的值。实参和形参允许同名,不会混淆。
2.由于形参和实参都是局部变量,作用域仅限于各自的函数体,即使形参和实参同名,二者也互不干扰。
请问上述两个原因是什么意思,我没看懂啊,还是有其他的原因啊,本人自学的C语言,基础比较薄弱,请各位大虾详解,谢谢啦~
|