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++, precedenza e associazione