一粒葡萄籽 2023-01-31 01:34 采纳率: 100%
浏览 36
已结题

关于函数的形参实参问题

到底什么时候值才会放生改变呀
比如第一张图 我明白行参无法改变实参的值,但是为什么第二张图的值会发生改变呢
到底什么时候值会发生改变 什么时候值不发生改变呀

img

img

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2023-01-31 08:33
    关注

    第二张图中,x和y申明成全局变量了,所以num和main函数访问的是同一个变量,自然就会被修改了
    而第一张图是函数参数,在变量传递给函数时,函数内部实际是将变量复制了一份,因此函数内部只是修改了复制的变量,而不是main函数中传递的变量,因此无法实现传递变量值的修改

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
  • P2441M 2023-01-31 08:39
    关注

    第二张图使用了extern关键字,是用来命声明外部变量的,这种情况下,对x,y做的改变也会影响到原来的值。
    还有一种会改变原来的值的方法就是引用传参,比如第一张图,fun函数如果改成引用传参就是:

    void fun(int &a, int &b, int &c) // 引用传参
    {
        // 引用传参会影响到原来的值
        a = 456;
        b = 567;
        c = 678;
    }
    
    评论
  • CSDN-Ada助手 CSDN-AI 官方账号 2023-02-02 13:45
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月4日
  • 已采纳回答 1月31日
  • 修改了问题 1月31日
  • 创建了问题 1月31日

悬赏问题

  • ¥15 关于网上一个easyx制作的见缝插针小游戏(c++)
  • ¥15 开地址法双散列函数处理碰撞
  • ¥15 想问一下这个是什么情况 虚拟机Linux打不开了
  • ¥15 联通光猫掉注册了怎么重新注册上去
  • ¥15 关于unity开发steamvr程序遇到的问题
  • ¥60 求tc downloader的下载方式
  • ¥15 华为 快捷方式 手电筒 接口
  • ¥15 Qt6.5支不支持Android13开发啊
  • ¥20 网络只能跑一半,应该如何设置
  • ¥20 Python调用百度开发者平台人脸识别接口