MirandaMeng
MirandaMeng
采纳率72.7%
2021-02-27 19:33

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为什么没有进行值的交换 如何修改代码才能实现交换呢

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • dictator927 晏虚 2月前

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

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

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

    希望可以帮助到你!

    点赞 评论 复制链接分享
  • qq_43414873 小白小白你好菜 2月前

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

    点赞 评论 复制链接分享
  • qq_43414873 小白小白你好菜 2月前

    #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;
    }

    点赞 评论 复制链接分享

为你推荐