void Exchg1(int x, inty)
{
int tmp;
tmp=x;
x=y;
y=tmp;
printf(“x=%d,y=% d\n”,x,y)
}
问:你认为这个函数是在做什么呀?
答:好像是对参数 x,y的值对调吧?
请往下看,我想利用这个函数来完成对a,b两个变量值的对调,程序如下:
void main()
{
int a=4,b=6;
Exchg1 (a,b)
printf(“a=%d,b=%d\n”,a,b)
}
我问:Exchg1 ()里头的 printf(“x=%d,y=%d\n”,x,y)语句会输出什么啊?
我再问:Exchg1 ()后的 printf(“a=%d,b=%d\n”,a,b)语句输出的是什么?
程序输出的结果是:
x=6 , y=4
a=4 , b=6 //为什么不是a=6,b=4呢?如果你也会有这个疑问,那是因为你跟本就不知实参a,b与形参x,y的关系了。
Exchg1(a,b)时,所完成的操作代码如下所示。
int x=a;//←
int y=b;//←注意这里,头两行是调用函数时的隐含操作
上面是调用函数时的两个隐含动作。它确实存在, 现在我只不过把它显式地写了出来而已。问题一下就清晰起来啦。后面就不用我说了吧。 仅仅是值的传递。