调用swap函数时,将x、y的值分别传给a、b,而a、b是重新开辟了存储空间来存储这个值,在swap中交换a、b的值,只对a、b的存储空间的值进行交换,而对x、y的值没有进行交换。想要实现交换,可以将x、y的内存地址传给a、b,这样在swap中改变a、b的地址的值,x、y对应地址的值也将改变。
代码如下:
#include<stdio.h>
void swap(int *a, int *b)
{
int t = *a;
* a = *b;
* b = t;
}
main()
{
int x, y;
x = 10;
y = 20;
printf("x = %d, y = %d\n", x, y);
swap(&x,&y);
printf("x = % d, y = %d\n",x,y);
}
改为引用
void swap(int& a, int& b)