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
Precedenza e associatività di operatore