C语言指针拷贝地址值不改变的问题

比如说函数
```void fun(int *a, int*b){int *t; t=a;a=b;b=t;}

按理说已经完成地址a,b的交换
可是在使用函数的时候却不能实现

3个回答

操作交换了输入变量的地址,但是变量的值不受影响,简言之,就是菜换了一个盘子装,但菜还是那个菜。也就是说地址和值并不是绑定的。

通过指针,只能交换指向的数
通过指针的指针,才能交换指针

void fun(int *a, int*b){int t; t=*a;*a=*b;*b=t;}
或者
void fun(int **a, int**b){int *t; t=*a;*a=*b;*b=t;}
调用也修改下

指针的交换要用到 指针的指针,就和 值传递用指针 ,那么 指针的地址当然用指针的指针。
图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问