Condividi tramite


L'operatore di riferimento indiretto: *

* cast-expression

Note

L'operatore di riferimento indiretto (unario*****) dereferenzia un puntatore, ovvero converte un valore del puntatore a un l-value.L'operando l'operatore di riferimento indiretto deve essere un puntatore a un tipo.Il risultato dell'espressione di riferimento indiretto è il tipo da cui il tipo di puntatore è derivato.L'utilizzo di * l'operatore in questo contesto è diverso dal relativo significato come operatore binario, ovvero moltiplicazione.

Se i punti di operando a una funzione, il risultato è un indicatore di funzione.Se indica un percorso di archiviazione, il risultato è un l-value che definisce il percorso di archiviazione.

L'operatore di riferimento indiretto può essere utilizzato tuttavia per dereferenziare i puntatori ai puntatori.Di seguito è riportato un esempio:

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

Se il valore del puntatore non è valido, il risultato sarà indefinito.Nell'elenco include alcune circostanze più comuni che invalidano un valore del puntatore.

  • il puntatore è un puntatore null.

  • Il puntatore specifica l'indirizzo di un elemento locale non visibile al momento del riferimento.

  • Il puntatore specifica un indirizzo in cui viene allineato appropriato per il tipo di oggetto puntato.

  • Il puntatore specifica un indirizzo non utilizzato da un programma in esecuzione.

Vedere anche

Riferimenti

Espressioni con gli operatori unari

Operatori di C++

Precedenza e associatività di operatore

l'operatore address-of: &

Concetti

Riferimento indiretto e l'Operators