为什么这种交换方法不起作用
void swap(int *x,int *y){
int *temp;
temp = x;
x = y;
y = temp;
}
为什么呢?我认为它和普通的一样......
答案 0 :(得分:3)
C按值传递函数参数:您只交换指针的副本。
如果你想交换两个int
:
void swap(int *x,int *y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}
答案 1 :(得分:1)
您正在交换堆栈中临时指针中存储的地址,而不是存储在它们指向的内存中的值。你想这样做:
void swap(int *x,int *y){
int temp = *x;
*x = *y;
*y = temp;
}
答案 2 :(得分:1)
x
和y
的行为与局部变量相似。
您的代码正在交换x
和y
值,而不是他们指向的值。