C++ 指针运算符
C++ 提供了两种指针运算符,它们分别是 (a) 取地址运算符 & 和 (b) 间接运算符 *。
指针是一个包含另一个变量地址的变量,或者说,包含另一个变量地址的变量被称为“指向”另一个变量。变量可以是任何数据类型,包括对象、结构体,或者另一个指针本身。
.(点)运算符和 ->(箭头)运算符用于引用 class、structure 和 union 的单个成员。
取地址运算符 &
& 是一个一元运算符,返回其操作数的内存地址。例如,如果 var 是一个整数变量,那么 &var 就是它的地址。该运算符与其他一元运算符具有相同的优先级和从右到左的结合性。
你应该将 & 运算符读作 “...的地址”,这意味着 &var 将被读作“var 的地址”。
间接运算符 *
第二个运算符是间接运算符 *,它是 & 的补运算符。它是一个一元运算符,返回位于其操作数指定地址的变量的值。
以下程序执行了这两个操作
#include <iostream>
using namespace std;
int main () {
int var;
int *ptr;
int val;
var = 3000;
// 获取 var 的地址
ptr = &var;
// 获取 ptr 处的值
val = *ptr;
cout << "Value of var :" << var << endl;
cout << "Value of ptr :" << ptr << endl;
cout << "Value of val :" << val << endl;
return 0;
}
当上述代码被编译并执行时,它会产生以下结果 −
Value of var :3000 Value of ptr :0xbff64494 Value of val :3000