C语言,数组元素作为参数在自定义函数中交换数值,输出后结果并没有调换??

如题所述

这是哪里给的例子?完全是误人子弟。
例子里的swap2是传值,不是传址;x是a[0]的值拷贝,y是a[1]的值拷贝,swap2中调换x、y当然不影响a[0]和a[1]了

void swap2(int *x, int *y)
{
    int z;
    
    z = *x;
    *x = *y;
    *y = z;
}
int main(int argc, char *argv[])
{
    int a[2] = {1,2};
    
    swap2(&a[0], &a[1]);

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-09
你要明白函数参数只是单向专递,要交换可以用指针。
第2个回答  2013-10-09
是的需要引用调用才会改变,void swap2(int &x,int &y)追问

为什么没有调换,不是已经交换值了吗??

追答

对于void swap2(int x,int y)函数,调用时swap(a[0],a[1]),是将a[0]和a[1]的值复制到另外两个临时变量中进行计算的,算完后那两个临时变量就会释放掉,而原来的a[0]和a[1]值并没有改变。

本回答被提问者采纳
相似回答