当出现指针、引用一起的时候,我们不容易区分到底是指针还是引用。
int main()
{
int i=42;
int *p;
int *&r=p;//r是一个对指针p的引用
r=&i;//r引用了一个指针,因此给r赋值&i 就是令p指向i
*r=0;//解引用r得到i,也就是p指向的对象,将i值改为0
}
最简单的方法就是从右到左阅读r的定义。离变量最近的符号(此例中是&r的符号&)对变量的类型有最直接的影响,因此r是一个引用。
声明符的其余部分用以确定r引用的类型是什么,此例中的符号* 说明r引用的是一个指针,最后声明的基本数据类型部分指出r引用的是一个int指针。
注:关于const限定符还有一些,这里没有写