#include<stdio.h>
void test(int *a, int *b);
void test2(int *a, int *b);
int main(){
int x=100, y=200;
//test(x,y);
// printf("%p %p\n",&x,&y);
test2(&x,&y);
printf("x=%d,y=%d\n",x,y);
}
void test(int *a,int *b){
int temp = *a;//传入参数的地址没有改变,改变的只是地址所指向的值
*a = *b;
*b = temp;
}
void test2(int *a, int *b){
int *temp = a;//交换地址,但不能改变x,y的实际地址,因为在编译的时候地址已经固定,需要更改地址所指向的内容
a = b;
b = temp;
printf("%d,%d\n",*a,*b);
}
如上代码,test()可以交换x,y的值,但是test2()函数却不可以,通过画图来分析一下