C++ 指针运算符(& 和 *)


C++ 提供了两种指针运算符,一种是取地址运算符 &,一种是间接寻址运算符 *。

指针是一个包含了另一个变量地址的变量,您可以把一个包含了另一个变量地址的变量说成是"指向"另一个变量。变量可以是任意的数据类型,包括对象、结构或者指针。

取地址运算符 &

& 是一元运算符,返回操作数的内存地址。例如,如果 var 是一个整型变量,则 &var 是它的地址。该运算符与其他一元运算符具有相同的优先级,在运算时它是从右向左顺序进行的。

您可以把 & 运算符读作"取地址运算符",这意味着,&var 读作"var 的地址"。

间接寻址运算符 *

第二个运算符是间接寻址运算符 *,它是 & 运算符的补充。* 是一元运算符,返回操作数所指定地址的变量的值。

请看下面的实例,理解这两种运算符的用法。

  1. #include <iostream>
  2. using namespace std;
  3. int main ()
  4. {
  5. int var;
  6. int *ptr;
  7. int val;
  8.  
  9. var = 3000;
  10.  
  11. // 获取 var 的地址
  12. ptr = &var;
  13.  
  14. // 获取 ptr 的值
  15. val = *ptr;
  16. cout << "Value of var :" << var << endl;
  17. cout << "Value of ptr :" << ptr << endl;
  18. cout << "Value of val :" << val << endl;
  19.  
  20. return 0;
  21. }

当上面的代码被编译和执行时,它会产生下列结果:

  1. Value of var :3000
  2. Value of ptr :0xbff64494
  3. Value of val :3000