zoukankan      html  css  js  c++  java
  • 两种&

    C++中&有两种含义:
            1)、取地址,例如:int* p = &a;
            2)、引用,例如:int& b = a。

    取地址时,&是一个一元运算符,返回的是操作数存放在内存中的起始位置(对于32位操作系统,是一个8位的十六进制数);

    引用时,它实际上就是被引用的变量,使用的是同一段内存地址内的数据,只是重新赋予了一个名字。在2)的例中,无论是b++还是a++,a和b两个值都会发生变化。对a和b取地址,会发现它们完全一样,&a == &b is true。

    在函数定义时,2)中的&会很有用。

    例如,写一个函数用来交换两个int变量的值:
    void exchange(int &a, int &b)
    {
            int tmp = a;
            a = b;
            b = tmp;
    }
    void main()
    {
            int x =1, y = 2;
            exchange(x,y);
            return 0;
    }
    假如,参数列表以(int a, int b)的形式,其结果,在exchange函数体中,a和b交换了值,但main中,x仍然是1,y仍然是2。

    &同样能用在函数返回值,例如
    int& max(int &a, int &b)
    {
            return a>b?a:b;
    }
    void main()
    {
            int x=1, y=2;
            max(x,y) ++ ;
            return 0;
    }
    运行结果,会发现y变成了3。因为max函数返回的是对大数的一个引用,也即是返回的就是y本身。在这个例子当中,去掉返回值限定中和形参表中的任何一个&都不能达成y+1的效果。

  • 相关阅读:
    HEW MAP文件使用
    UltraEdit 脚本 实现查找替换
    PC软件与PLC串口通信 奇偶检验问题
    Halcon的应用程序 打开后 弹出没有帮助文件错误提示
    STM32f4 ARM Bootloader
    RAM
    知识整理--内存
    CentOS 5.x 多个ISO文件 安装方法(VMware)
    Modbus总结
    【CF1253A】Single Push【模拟】
  • 原文地址:https://www.cnblogs.com/mumuliang/p/1873575.html
Copyright © 2011-2022 走看看