通过调用函数交换两个变量的值来理解
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void swap(int* x , int* y) {
int t = 0;
t = *x;
*x = *y;
*y = t;
}
int main() {
int a = 0, b = 0;
printf("请输入要交换的两个数a、b\n");
scanf("%d%d", &a, &b);
swap(&a,&b);
printf("交换后的a=%d,b=%d\n", a, b);
return 0;
}
形参x,y为int指针类型存了内存上的地址,实参a,b进行取地址&才能与int匹配。创建变量a、b时会在内存中申请两个空间,则x,y存放的内容分别是a,b的内存地址,如图:
解引用操作x就是根据地址访问到变量a,此处x和a等价,int t=*x就将a的值赋给了t,*x按x存放的a的地址找到了a存放的值然后就赋给了t,如图:
x=y就是y解引用操作得到了b的值2,赋给x找到的a的空间这样a就被赋予了b的值2,y=t将t的值赋给了y找到的内存空间里,如图:
这样就完成了a,b值的交换。