0
我想交换两个参数的值。但是我没有通过在函数中交换他们的地址来实现它。起初,我认为地址可以在功能上改变。但是在调试之后,我发现虽然地址在函数中被改变了,但在主函数中没有改变。为什么指针的地址在函数中的作用与参数的值相同?做,只更改副本?通过函数中的地址交换两个参数出错
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;
}
现在我已经学会了解决这个问题的方法之一。但谁能告诉我如何通过二级指针来解决它。因为你是自动交换本地指针将一次函数调用返回不复存在
#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 a = 5,b = 10;只有1个深度。不能得到&((..)&a) –
在你的第二块,你显示正确的整数交换功能。你想在哪里有第二个排名指针? – Holger
好的!我找到了我想要的答案。 – Ghoster