【发布时间】:2013-01-06 07:51:23
【问题描述】:
我知道如何使用指针进行交换,但是,如果我尝试这样的不同方法:
/* Pointers */
#include <stdio.h>
int main ()
{
int a=4,b=6;
swap(&a,&b);
printf("A is %d, and B is %d\n",a,b);
return 0;
}
int swap(int *a, int *b)
{
int *temp;
temp = a;
a = b;
b = temp;
return 0;
}
它不起作用。基本上交换函数正在改变地址,就像'a'现在有'b'的地址,反之亦然。如果我打印出交换函数中的值,它会给出交换的值,但它不会反映在 main功能。谁能告诉我为什么?
【问题讨论】:
-
是 C 还是 C++?我会推荐两种不同的东西。
-
那是原贴的错,不代表答案有误。
-
问题的主题具有误导性,因为它说 交换指针 并且公认的解决方案实际上是关于交换这些指针的内容。使用此解决方案,
a和b仍然指向相同的内存地址。因此,从我的角度来看,您应该将问题重命名为 swap integers 或 @JensGustedt 建议的内容(重复)