Fre*_*kin 2 c swap pointers pass-by-reference
据我所知,当你通过C中的函数传递引用时,函数的参数会占用将被修改的指针的地址.我极端难以理解为什么这个通过引用传递的例子不起作用.谁能指出我正确的方向......
这应该输出一个交换但是当我编译交换时没有发生为什么这个通过引用传递不起作用?
#include <stdio.h>
void swapnum(int *i, int *j) {
int temp = i;
i = j;
j = temp;
}
int main(void) {
int a = 10;
int b = 20;
swapnum(&a, &b);
printf("A is %d and B is %d\n", a, b);
getchar();
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你忘了在函数内部取消引用你的指针.因此,您最终会重新分配本地指针值,而不是更改指向的实际值,并且它不起作用.
所以,使用*dereference运算符:
int temp = *i;
*i = *j;
*j = temp;
Run Code Online (Sandbox Code Playgroud)