在c++primer一书中讲到:像&和*既能作为表达式里的运算符,也可以作为声明的一部分;符号的上下文决定符号的意义。
int i = 42;
int &r = i; //&紧随类型名出现,因此是声明的一部分,r是一个引用
int *p; //*紧随类型名出现,因此是声明的一部分,p是一个指针
p = &i; //&出现在表达式,是一个取址符
*p = i; //*出现在表达式,是一个解引用符
int &r2 = *p; //&声明的一部分,*是一个解引用符
面对比较复杂的指针或者引用的声明语句,从右往左阅读有助于弄清它的含义;