C 按函数中的地址交换两个参数时出错

C 按函数中的地址交换两个参数时出错,c,function-pointers,C,Function Pointers,我想交换两个参数的值。但我没能通过在函数中交换他们的地址来实现。起初,我认为地址可以在函数中更改。但调试后,我发现虽然函数中的地址已更改,但主函数中的地址没有更改。为什么指针的地址在函数中的作用与参数的值类似?你只更改副本吗 include<stdio.h> void swap(int *, int *); int main() { int a = 5 , b = 10; swap(&a, &b); printf("%d", a); printf("\

我想交换两个参数的值。但我没能通过在函数中交换他们的地址来实现。起初,我认为地址可以在函数中更改。但调试后,我发现虽然函数中的地址已更改,但主函数中的地址没有更改。为什么指针的地址在函数中的作用与参数的值类似?你只更改副本吗

include<stdio.h>
void swap(int *, int *);
int main()
{
  int a = 5 , b = 10;
  swap(&a, &b);
  printf("%d", a);
  printf("\n%p", &a);
  return 0;
}

void swap(int *a, int *b)
{
  int *temp ;
  temp = a;
  a = b;
  b = temp;

}
包括
无效掉期(整数*,整数*);
int main()
{
INTA=5,b=10;
互换(a&b);
printf(“%d”,a);
printf(“\n%p,&a”);
返回0;
}
无效交换(int*a,int*b)
{
内部*温度;
温度=a;
a=b;
b=温度;
}
现在我已经学会了解决这个问题的方法之一。但是谁能告诉我如何用二阶指针来解决这个问题呢

#include<stdio.h>
void swap();
int main()
{
  int a = 5 , b = 10;
  swap(&a, &b);
  printf("%d", a);
  printf("\n%p", &a);
  return 0;
}
void swap(int *a, int *b)
{
  int temp ;
  temp = *a;
  *a = *b;
  *b = temp;
}
#包括
无效互换();
int main()
{
INTA=5,b=10;
互换(a&b);
printf(“%d”,a);
printf(“\n%p,&a”);
返回0;
}
无效交换(int*a,int*b)
{
内部温度;
温度=*a;
*a=*b;
*b=温度;
}

在第一个代码段中,将不会进行代码段交换,因为您正在交换自动本地指针,一旦函数调用返回,这些指针将不再存在。在
swap
函数中,对本地指针的这种修改将不会在
main
函数中看到。

在第一个代码段中,将不会进行交换,因为您正在交换自动本地指针,一旦函数调用返回,这些指针将不再存在。对
swap
函数中本地指针的这种修改将不会在
main
函数中看到。

int a=5,b=10;只有1个深度。无法在第二个块中获取&(…)&a),请显示整数的正确交换函数。你想在哪里有一个二级指针?好的!我找到了我想要的答案;只有1个深度。无法在第二个块中获取&(…)&a),请显示整数的正确交换函数。你想在哪里有一个二级指针?好的!我找到了我想要的答案。谢谢!我在另一个问题中找到了具体的答案。但我也很感谢你的帮助!非常感谢。我在另一个问题中找到了具体的答案。但我也很感谢你的帮助!