ljhziyou 2015-04-12 16:40 采纳率: 55.6%
浏览 1699
已采纳

关于c++参数传递的传值调用的问题

我看书本上还有网上一些博客都说传值方式不会改变实参的值,但是我在调试下面这段代码时得出的结果是“x:20 y:10",这跟书本说的不一样,能解释一下吗?(我用的是dev cpp 5.6.3)
代码:
int main()
{
int x=10,y=20;
swap(x,y);
cout<<"x:"<<x<<" "<<"y:"<<y;
return 0;
}
void swap(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;

}

  • 写回答

5条回答 默认 最新

  • threenewbee 2015-04-12 17:21
    关注

    http://codepad.org/RG6qPfAY
    x:10 y:20
    没有问题。

     #include<iostream>
    using namespace std;
    void swap(int x,int y);
    int main()
    {
        int x=10,y=20;
        swap(x,y);
        cout<<"x:"<<x<<" "<<"y:"<<y;
        return 0;
    }
    void swap(int x,int y)
    {
        int temp;
        temp=x;
        x=y;
        y=temp;
    
    }
    
    

    仔细看和你的程序有什么不同?
    看到没有,你缺少了函数的声明,C要求先声明后使用。

    你肯定要问没有声明,我的代码怎么还能编译?对,因为系统库中也有一个swap函数。你调用的根本不是你写的。
    系统的swap当然可以交换了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥15 pyqt信号槽连接写法
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注