【C++】指针和引用

转自alice4C++中指针和引用的区别比较

指针

  指针是编程语言中的一个对象,它的值是一个地址直接指向内存中另一个地方。

引用

  引用就是某一变量(对象)的一个别名,对引用的操作与对变量直接操作完全一样

指针和引用的区别

  1.指针是一个实体,而引用仅是个别名;

  2.引用必须被初始化且必须从一而终(可将引用看做常量指针),指针都可不必;

  3.可以有const指针,但是没有const引用;

  4.引用不能为空,指针可以为空;

  5.“sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;

  6.指针和引用的自增(++)运算意义不一样; 指针自增指向下一个地址,而引用是对变量本身的值的增加。

  7.指针可以有多级,但是引用只能是一级(可以定义引用的引用,int i; int& ir = i; int &irr = ir,但这都是一级),例如int **p是合法的,而 int &&a是右值引用; 

指针和引用的相同点

  两者都是地址的概念,指针指向一块儿内存,其内容为所指内存的地址;引用是某块儿内存的别名。底层可将引用看做常量指针,即指向的地址必须被初始化且不再发生改变的指针。

注意引用作为返回值

  1.不能返回局部变量的引用,主要原因是局部变量会在函数返回后被销毁,因此被返回的引用就成为了"无所指"的引用,程序会进入未知状态。

  2.返回函数内部new分配的内存的引用,可能有内存泄露的风险。虽然不存在局部变量的被动销毁问题,可对于这种情况(返回函数内部new分配内存的引用),又面临其它局面。例如,被函数返回的引用只是作为一个临时变量出现,而没有被赋予一个实际的变量,那么这个引用所指向的空间(由new分配)就无法释放,造成内存泄漏。

使用指针和引用的情况对比

  1.是考虑到存在不指向任何对象的可能(在这种情况下,能够设置指针为空)

  2.需要能够在不同的时刻指向不同的对象(在这种情况下,能改变指针的指向)。如果总是指向一个对象并且一旦指向一个对象后就不会改变指向,那么就应该使用引用。

  3.重载某个操作符时,应该使用引用。当你知道你必须指向一个对象并且不想改变其指向时,或者在重载操作符并为防止不必要的语义误解时,你不应该使用指针。而在除此之外的其他情况下,则应使用指针。

原文链接: https://www.cnblogs.com/chen-cs/p/13097495.html

欢迎关注

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

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    【C++】指针和引用

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

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

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

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

(0)
上一篇 2023年4月3日 上午9:20
下一篇 2023年4月3日 上午9:20

相关推荐