间接寻址运算符:*
* cast-expression
备注
一元间接寻址运算符 (*) 取消引用指针;即它将指针值转换为左值。 间接寻址运算符的操作数必须是指向类型。 间接表达式的结果是指针类型派生的类型。 使用 * 运算符在此上下文中与其含义不同用作二元运算符时,是相乘。
如果操作数指向功能,结果是操作指示符。 如果它指向存储位置,则结果是指定存储位置的左值。
间接寻址运算符可能请使用取消引用指针为指针。 例如:
// expre_Indirection_Operator.cpp
// compile with: /EHsc
// Demonstrate indirection operator
#include <iostream>
using namespace std;
int main() {
int n = 5;
int *pn = &n;
int **ppn = &pn;
cout << "Value of n:\n"
<< "direct value: " << n << endl
<< "indirect value: " << *pn << endl
<< "doubly indirect value: " << **ppn << endl
<< "address of n: " << pn << endl
<< "address of n via indirection: " << *ppn << endl;
}
如果该指针的值无效,则结果是未定义的。 下面的列表包含无效的指针值的一些最常见的情况。
指针是一个 null 指针。
指针指定在引用时不可见的本地项目的地址。
指定用于指针所指向的对象的类型不正确对齐的地址。
指针指定执行程序不使用的地址。