引用本身不是对象,因此不能定义指向引用的指针。但指针是对象,所以存在指针的引用。
int i = 42;
int *p; // p是一个 int 型指针
int *&r = p; // r是一个对指针p的引用
r = &i; // 相当于 p = &i;
*r = 0; // 相当与 *p = 0;
要理解r的类型到底是什么,就简单的方法是从右向左阅读r的定义,离变量名最近的符号(此题中是&r
的符号是&
)对变量的类型有最直接的影响,因此r是一个引用。声明符的其余部分以确定r引用的类型是什么,此题中的符号*
说明r引用的是一个指针。最后,声明的基本数据类型部分指出r引用的是一个int
指针。
面对一条比较复杂的指针或引用的声明语句时,从右向左阅读有助于弄清楚它的真实含义