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),请显示整数的正确交换函数。你想在哪里有一个二级指针?好的!我找到了我想要的答案。谢谢!我在另一个问题中找到了具体的答案。但我也很感谢你的帮助!非常感谢。我在另一个问题中找到了具体的答案。但我也很感谢你的帮助!