在C及C++中函数参数的传递都是以副本传递的。你用swap交换指针,看上去是交换了,实质上是交换的两个指针副本的值。如果你想交换指针的话,你可以这样改写:
void swap(int **p, int **q);这是C的方法。你现在是在用C++编写,可以这样
void swap(int& *p, int& *q);
希望对你有帮助。
t = p;
p = q;
q = t; 交换的是地址,地址指向的内容没变
#include
using namespace std;
void swap(int *p, int *q);
int main(void)
{
int a, b, c;
int *p1 = &a, *p2 = &b, *p3 = &c;
cout << "请输入3个数: ";
cin >> a >> b >> c;
if (*p1 < *p2)
{
swap(p1, p2);
}
if (*p1 < *p3)
{
swap(p1, p3);
}
if (*p2 < *p3)
{
swap(p2, p3);
}
cout << a<< " " << b<< " " << c<
void swap(int *p, int *q)
{
int t;
t = *p;
p = *q;
*q = t;
}