间接寻址运算符:*

* 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 指针。

  • 指针指定在引用时不可见的本地项目的地址。

  • 指定用于指针所指向的对象的类型不正确对齐的地址。

  • 指针指定执行程序不使用的地址。

请参见

参考

使用一元运算符的表达式

C++运算符

运算符优先级和结合性

address-of运算符:&

概念

间接和运算符地址