zoukankan      html  css  js  c++  java
  • 引用

    #include <iostream>
    using namespace std;
    int getAA() {
        int a;
        a = 10;
        return a;
    }
    int& getAA1() {
        int a;
        a = 10;
        return a;
    }
    int main() {
        int a = 0;
        int a2 = 0;
        a = getAA();
        a2 = getAA1();

        int &a3 = getAA1();
        cout << "a: " << a << endl;
        cout << "a2: " << a2 << endl;
        cout << "a3: " << a3 << endl;
        /*
            a3产生乱码,因为引用相当于编译器做了如下操作
            int * getAA1() {
                int a;
                a = 10;
                return &a;
            }
            当执行int &a3 = getAA1();的时候getAA1返回a的地址,a3中实际存了地址,打印a3的时候,编译器做了*a3的操作,
            但是,a是临时变量,在将地址传给a3之后就回收了,所以,此时打印a3将会出现不确定的乱码
            而a2不同,在执行a2 = getAA1();的时候,getAA1()返回了a的地址,但是a2是整型,所以,a2中传入的是地址a的值,
            后来在打印的时候,虽然临时变量a的值已经回收,但是a2中已经存下了a的值,可以正确打印
        */
        system("pause");
        return 0;
    }

    当被调用的函数当左值的时候,必须返回一个引用

  • 相关阅读:
    dockor 在windows的安装步骤
    go gin框架安装流程
    go 引入包之后没有起作用
    go get github.com/gin-gonic/gin 下载失败
    group 与having使用例子
    php把服务器上的资源下载并保存本地
    mysql 自我连接表
    laravel 队列的简单例子
    rem和em,px的使用
    带进度条的自动跳转页面代码
  • 原文地址:https://www.cnblogs.com/dongjian16/p/6992735.html
Copyright © 2011-2022 走看看