[英]swap function didn't work
为什么这种交换方法不起作用
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
值,而不是它们所指向的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.