Condividi tramite


Operatore di riferimento indiretto: *

* cast-expression

Note

L'operatore di riferimento indiretto unario (*) dereferenzia un puntatore; ovvero converte un valore del puntatore in l-value. L'operando dell'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 dell'operatore * in questo contesto è diverso dal relativo significato come operatore binario, ovvero la moltiplicazione.

Se l'operando punta a una funzione, il risultato è un indicatore di funzione. Se invece punta a un percorso di archiviazione, il risultato è un valore l-value che definisce il percorso di archiviazione.

L'operatore di riferimento indiretto può essere utilizzato in modo cumulativo per dereferenziare i puntatori ai puntatori. Ad 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 seguente sono incluse alcune delle situazioni 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 allineato in modo non appropriato per il tipo di oggetto cui fa riferimento.

  • Il puntatore specifica un indirizzo non utilizzato dal programma di esecuzione.

Vedere anche

Riferimenti

Espressioni con operatori unari

Operatori C++

Operatori C++, precedenza e associazione

Operatore address-of: &

Concetti

Operatori address-of e di riferimento indiretto