为什么这种交换方法不起作用
void swap(int *x,int *y){
int *temp;
temp = x;
x = y;
y = temp;
}
为什么?我觉得和普通的一样。。
C 按值传递函数参数:您只是交换指针的副本。
如果你想交换两个int
:
void swap(int *x,int *y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}
您正在交换存储在堆栈上的临时指针中的地址,而不是存储在它们指向的内存中的值。你想这样做:
void swap(int *x,int *y){
int temp = *x;
*x = *y;
*y = temp;
}
x
并且y
表现得就像局部变量一样。
您的代码正在交换x
和y
值,而不是它们指向的值。