【发布时间】:2017-03-03 10:48:04
【问题描述】:
我想交换两个参数的值。但是我没有通过在函数中交换它们的地址来实现它。起初,我认为地址可以在功能上改变。但是调试后发现,虽然在函数里改了地址,但是在main函数里并没有变。为什么指针的地址在函数中的作用与参数的值一样?是否只更改副本?
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)
-
在您的第二个块中,您显示了整数的正确交换函数。你喜欢在哪里有第二名的指针?
-
好的!我找到了我想要的答案。
标签: c function-pointers