C++简单程序运行结果

#include <iostream>
using namespace std;
void f(int *p,int *q)
{ int *t= p; p = q; q=t;}
int main()
{
 int a = 10, b = 20;
 f(&a,&b);
 cout << a << ' ' << b;
 return 0;
}

 

 

此处的a和b为什么没有进行值的交换 如何修改代码才能实现交换呢

#include <iostream>
using namespace std;
void f(int *p,int *q)
{ int t= *p; *p = *q; *q=t;}
int main()
{
 int a = 10, b = 20;
 f(&a,&b);
 cout << a << ' ' << b;
 return 0;
}

你的p和q是对应实参的地址,加了*之后,才能对应改变实参值

你好,函数定义稍微有点问题,这个函数传进去的是指针,目的是通过指针修改函数外面的变量,所以在函数体里也需要通过指针来进行值的交换。

函数体写成这样应该就可以实现了(楼上的兄弟也写过了)

void f(int *p, int *q){
    int t;
    t = *p;
    *p = *q;
    *q = t;
}

希望可以帮助到你!