像*和&这样的符号,既能用做表达式里的运算符,也能做为声明的一部分出现,符号上下文决定了符号的意义。
指针
int i = 42;
引用
int &r = i; //&紧随类型名出现,所以是声明的一部分,r是一个引用
运算符
int *p; //*紧随类型名出现,所以是声明的一部分,p是一个指针。
p = &i; //&出如今表达式中,是一个取地址符
*p = i; //*出如今表达式中,是一个解引用符。
int &r2 = *p; //&紧随类型名出现,所以是声明的一部分,r2是一个引用,*出现是在表达式中,是一个解引用符。
在声明的语句中,&和*用于组成符合类型;在表达式中他们的角色又转变成运算符。在不一样的场景下出现的虽然是同一个符号、可是因为含义大相径庭,因此咱们彻底能够把它看成不一样的符号来看待。