运行的结果为什么相同

img

调用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)