blblbl.. 2023-01-26 19:22 采纳率: 100%
浏览 29
已结题

指针型变量的一个问题

这两种有什么区别啊
特别是加了的那种 表达什么意思啊(不好意思特殊符号它不允许我打出来)

img

  • 写回答

2条回答 默认 最新

  • P2441M 2023-01-26 19:45
    关注

    加了&符号的是引用参数,没加的是传值参数。
    区别是,如果是传值参数,会克隆实参并传给形参。所以,在函数内部对形参进行更改并不会影响外部的实参。

    如果是引用参数,实际上形参就是实参的别名,它们公用同一块内存地址,所以在函数内部对形参的更改也会影响到外部的实参。

    举个典型的例子,写一个Swap函数,用来交换两个数。
    如果这样写,是没有效果的,因为在调用Swap函数时传入的是num1num2的副本:

    void Swap(int a, int b)
    {
        int temp = a;
        a = b;
        b = a
    }
    
    int main()
    {
        int num1 = 0, num2 = 1;
        Swap(num1, num2);
        return 0;
    }
    

    但是如果这样写,就有效了,因为形参ab与实参num1num2指向用一块内存,在Swap中做的更改也会影响到num1num2

    void Swap(int &a, int &b)  // 使用引用参数
    {
        int temp = a;
        a = b;
        b = a
    }
    
    int main()
    {
        int num1 = 0, num2 = 1;
        Swap(num1, num2);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月3日
  • 已采纳回答 1月26日
  • 创建了问题 1月26日

悬赏问题

  • ¥15 怎么改成循环输入删除(语言-c语言)
  • ¥15 安卓C读取/dev/fastpipe屏幕像素数据
  • ¥15 pyqt5tools安装失败
  • ¥15 mmdetection
  • ¥15 nginx代理报502的错误
  • ¥100 当AWR1843发送完设置的固定帧后,如何使其再发送第一次的帧
  • ¥15 图示五个参数的模型校正是用什么方法做出来的。如何建立其他模型
  • ¥100 描述一下元器件的基本功能,pcba板的基本原理
  • ¥15 STM32无法向设备写入固件
  • ¥15 使用ESP8266连接阿里云出现问题