查看: 790|回复: 0

c++中引用

[复制链接]
  • TA的每日心情
    郁闷
    2016-5-29 10:16
  • 签到天数: 56 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2015-5-5 20:32:52 | 显示全部楼层 |阅读模式
    #include<iostream>
    using namespace std;
    int &function1(int a)
    {
            a++;
            return a;
    }
    int &function2(int &a)
    {
            a++;
            return a;
    }
    void main()
    {
            int b = 1;
            int &b1 = function1(b);
            int &b2 = function2(b);
            cout << "function1(int a):" << b1 << endl;//打印出现乱码
            cout << "function2(int &a):" << b2 << endl;//打印不会出现乱码
            system("pause");
    }
    /*int &b1=function1(b)出现乱码的原因
    1.function1(b)时候,把b的值拷贝一份给a
    2.a++
    3.int &b1是个引用,c++编译器执行下面操作
                            1.取出a的地址,2.把a的地址传递出来,并且取*操作取出a地址中的值
                            但是在执行引用操作之前,由于function1中的a是局部变量,在函数执行结束后会自定清空,所以int&b会得到一个垃圾值
    */
    /*
    int &b2=function2(b)没有出现乱码,
    function2(b)时候,a是b的别名===把b的地址传给a  甩出a的地址就相当于甩出b的地址,取*操作的时候也是取b地址中的值,所以不是乱码
    */
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    站长推荐上一条 /1 下一条