C++ * 和 &


  C++ 中有许多运算符,其中 &, * 是最复杂的两个符号,既能用作表达式里的运算符,也能作为声明的一部分出现,上下文决定了符号的意义。

  简单摘抄一段《C++ Primer》的代码解释这两个字符的用法:


int i = 42;
int &r = i; //&紧随类型名出现,因此是声明的一部分,r是一个引用
int *p; //*紧随类型名出现,因此是声明的一部分,p是一个指针
p = &i; //&出现在表达式中,是一个取地址符
*p = i; //*出现在表达式中,是一个解引用符
int &r2 = *p; //&是声明的一部分,*是一个解引用符

并且,& 和 * 用于声明变量,且只作用一次。

例如:


int *p,q;//声明p是一个int类型的指针,q是int
int* r,s;//声明r是一个int类型的指针,s是int

由于将 * 放在类型后,或者变量名前效果一样,所以建议使用第一种写法便于理解。