在下面的代码中为了在px
之间进行交换和py
你需要一个指针指向py
的地址和px
有效地交换它们。
我的问题是关于 int temp
当px
的值放入其中它如何返回正确的值,因为没有指向它的指针能够给出正确的值以及 int temp
的地址如何?没有克隆给出错误的值?
void swap(int px, int py)
{
int temp;
temp = px;
px = py;
py = temp;
}
//pointer version
void swap(int *px, int *py)
{
int temp;
temp = *px;
*px = *py;
*py = temp;
}
最佳答案
两个函数交换int
值。但是这种交换会影响调用代码的 int
吗?
使用第二个 swap()
,交换的效果可以在原始 a,b
中看到,因为该函数使用原始地址 a,b
。
int a = 1;
int b = 2;
swap_version2(&a, &b);
printf("%d %d\n", a, b); // prints 2 1
使用第一个 swap()
时,交换的效果在原始 c,d
中看不到。因为 swap()
函数正在交换 c,d
的副本。最终效果:第一个交换功能只是浪费时间。它不会交换c,d
。
int c = 3;
int d = 4;
swap_version1(c, d);
printf("%d %d\n", c, d); // prints 3 4
关于c - 使用指针交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39372041/