C++-引用和指针

引用是C++引入的重要机制(C语言没有)

本质区别

引用是别名,指针是地址

区别

  1. 引用变量在功能上等于一个指针常量,即一旦指向某一个单元就不能在指向别处;
  2. 在底层,引用变量由指针按照指针常量的方式实现,引用的底层存储着其指代对象的地址;
  3. 指针可以被重新赋值以指向另一个不同的对象。但是引用则总是指向在初始化时被指定的对象,以后不能改变,但是指定的对象其内容可以改变;
  4. 从内存分配上看,程序为指针变量分配内存区域,而不为引用分配内存区域,因为引用声明时必须初始化,从而指向一个已经存在的对象。引用不能指向空值;
  5. 理论上,对于指针的级数没有限制,但是引用只能是一级。
  6. 需要返回函数内局部变量的内存的时候用指针。使用指针传参需要开辟内存,用完要记得释放指针,不然会内存泄漏。而返回局部变量的引用是没有意义的。