Sdílet prostřednictvím


Operátor indirection: *

Syntaxe

* cast-expression

Poznámky

Unární nepřímý operátor (*) dereference ukazatele; to znamená, že převede hodnotu ukazatele na l-hodnotu. Operand operátoru indirection musí být ukazatel na typ. Výsledkem výrazu nepřímých výrazů je typ, ze kterého je odvozen typ ukazatele. Použití operátoru * v tomto kontextu se liší od jeho významu jako binární operátor, což je násobení.

Ukazuje-li operand na funkci, je výsledkem označení funkce. Ukazuje-li na umístění úložiště, je výsledkem l-hodnota označující umístění úložiště.

Operátor nepřímého rozdělení lze použít kumulativní pro odvozování ukazatelů na ukazatele. Příklad:

// 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;
}

Pokud je hodnota ukazatele neplatná, výsledek není definován. Následující seznam zahrnuje některé z nejběžnějších situací, které zneplatňují hodnotu ukazatele.

  • Ukazatel je nulový.

  • Ukazatel určuje adresu místní položky, která není v době reference viditelná.

  • Ukazatel určuje adresu, která je pro typ objektu, na který ukazatel ukazuje, nesprávně zarovnána.

  • Ukazatel určuje adresu, která není používána spuštěným programem.

Viz také

Výrazy s unárními operátory
Integrované operátory C++, jejich priorita a asociativita
Operátor address-of: &
Dereferenční operátory a operátory adresy