c++之变量的引用

昨天耀哥在问引用的时候,当时有一点点懵。平时经常用到引用的时候就是函数的参数传递。

引用就是某一变量的一个别名,对引用的操作与对变量直接操作完全一样,但是要注意到的是引用并没有新开辟内存空间,因此并不占内存单元。在声明引用时,必须同时对其进行初始化。

为了简单理解引用,写了以下代码:

int a = 10;
    int b = 20;
    std::cout << "a" << &a << std::endl;
    std::cout << "b" << &b << std::endl;
    std::cout << "________________________" << std::endl;
    int &c= a;
    std::cout << "a" << &a << std::endl;
    std::cout << "b" << &b << std::endl;
    std::cout << "c" << &c << std::endl;
    std::cout << "________________________" << std::endl;
    c = b;
    std::cout << "a" << &a << std::endl;
    std::cout << "b" << &b << std::endl;
    std::cout << "c" << &c << std::endl;
    std::cout << "________________________" << std::endl;

代码运行结果如下:

c++之变量的引用

不过在先前的调试中,当代码走到“c=b;”时,看到a,b,c的值均为20。小脑袋有点混乱了,一度以为变量c同时是变量a和b的引用了。是知道的,引用初始化后,并不能再把该引用作为其他变量的别名了。一度还以为是c++11对规则进行了新的修改呢,还专门去查了c++11官方文档。差点没有反应过来。仔细一想,原来”c=b;“并不是修改别名,而只是简单的整形赋值操作,逻辑上等同于“c= 20”;于是,写了上面的代码对想法进行了验证。果然发现变量c的地址还是和变量a地址相同,并没有在执行“c=b;”后,改变其地址。
原文链接: https://www.cnblogs.com/hhuangfh/p/6096741.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/244490

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 上午12:09
下一篇 2023年2月14日 上午12:10

相关推荐