C++ 指针运算符
C++ 提供了两个指针运算符,它们是 (a) 取地址运算符 & 和 (b) 解引用运算符 *
。
指针是一个变量,它包含另一个变量的地址,或者可以说包含另一个变量地址的变量被称为 “指向” 另一个变量。一个变量可以是任何数据类型,包括对象、结构体或指针本身。
.
(点) 运算符和 ->
(箭头) 运算符用于引用类、结构体和联合体的各个成员。
取地址运算符 &
& 是一个一元运算符,它返回它的操作数的内存地址。例如,如果 var 是一个整数变量,那么 &var 就是它的地址。该运算符与其他一元运算符具有相同的优先级和从右到左的结合性。
你应该将 & 运算符读做 "的地址"
这意味着 &var
将被读做 “var 的地址”。
解引用运算符 *
第二个运算符是解引用运算符 *,它是 & 的补充。它是一个一元运算符,返回其操作数指定的地址处的变量的值。
以下程序执行了这两个操作
#include <iostream>
using namespace std;
int main () {
int var;
int *ptr;
int val;
var = 3000;
// take the address of var
ptr = &var;
// take the value available at 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