繁体   English   中英

交换功能不起作用

[英]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;
}
  1. xy行为就像局部变量一样。

  2. 您的代码交换的是xy值,而不是它们所指向的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM