C++指针与引用小结
概念
引用
引用就是某一对象(变量)的一个别名。举个例子更容易理解:
int m;
int &n = m;
这段程序中,n是m的一个引用(reference),m是被引用物(referent)。
n相当于m的别名(绰号),对n的任何操作就是对m的操作。
n既不是m的拷贝,也不是指向m的指针,其实n就是m它自己。
指针
指针用于指向对象(变量)。指针提供对其所指对象的间接访问。指针用于指向单个对象。
(这三句摘自《C++ Primer, Fourth Edition》)。再举个例子:
int m;
int *n = &m;
第二条语句定义了一个指向int型的指针n,并初始化n使其指向int型的变量m。
*n中的 * 操作符表明n是一个指针变量(n本质上也是一个变量,只不过这个变量的存储内容是 地址)。
&m中的 & 符号是取地址操作符,当此操作符用于一个对象上时,返回的是该对象的存储地址。
联系
- 都是有关地址的概念。 指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名。
 - 都是间接访问其他对象。
 - 都能用于函数参数和返回值的传递。
 
区别
- 一、指针是一个实体(本质上就是存放变量地址的一个变量),而引用只是个别名。
 
这句话从内存分配的角度很好理解,程序会为指针变量分配内存区域,而引用不分配内存区域。
- 二、指针可变,引用不可变。
 
指针在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。 引用在逻辑上不独立,具有依附性,所以引用必须在一开始就被初始化,而且引用一旦和某个对象绑定后就不能再改变(从一而终)。
- 三、指针可以为空,引用不能为空。
 
即指针可...
Continue to read