指针与经典的交换变量问题
代码1#include <stdio.h>
void exchange(int c, int d) {
int temp;
temp = c;
c = d;
d = temp;
}
int main(void) {
int a=1, b=2;
exchange(a, b);
printf("%d %d", a, b);
return 0;
}
这个代码是不能实现交换的,因为exchange函数执行完毕后,将c和d交换了,交换完之后对a和b不起作用了。
代码2
#include <stdio.h>
void exchange(int* c, int* d) {
int temp;
temp = *c;
*c = *d;
*d = temp;
}
int main(void) {
int a=1, b=2;
exchange(&a, &b);
printf("%d %d", a, b);
return 0;
}
那么代码2为什么就可以实现交换,同样是交换了形式参数,两者有什么区别?(我好像模模糊糊知道一点,但无法用语言表达) 本帖最后由 sunrise085 于 2020-8-24 17:35 编辑
给你看个图,我之前的回答中写的。数据我没改,意思一样
第一种写法,cd 是新的变量是临时变量
第二种写法,没有新的变量,cd 就是ab
sunrise085 发表于 2020-8-24 17:33
给你看个图,我之前的回答中写的。数据我没改,意思一样
第一种写法,cd 是新的变量是临时变量
第二种 ...
指针其实可以理解为一种绑定
页:
[1]