共用方式為


間接取值運算子: 1

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

  • 指標指定本機項目未參考的次顯示的地的址。

  • 指標指定的位址,指到的物件型別並未適當對齊。

  • 指標會指定不執行程式所使用的位址。

請參閱

參考

一元 (unary) 運算子的運算式

C + + 運算子

運算子優先順序和順序關聯性

傳址運算子: &

概念

間接取值和傳址運算子