Condividi tramite


Riferimento indiretto e l'Operators

l'operatore di riferimento indiretto (*) accede indirettamente un valore, tramite un puntatore.L'operando deve essere un valore del puntatore.Il risultato dell'operazione è il valore indirizzato dall'operando; ovvero il valore all'indirizzo cui il suo operando indica.Il tipo del risultato è il tipo che gli indirizzi di operando.

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.

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.

L'operatore address-of (&) fornisce l'indirizzo del suo operando.L'operando dell'operatore address-of può essere un indicatore di funzione o un l-value che definisce un oggetto che non è un campo di bit e non è dichiarato con il registro identificatore classe di archiviazione.

Il risultato dell'operazione di indirizzo è un puntatore all'operando.Il tipo utilizzato dal puntatore è il tipo dell'operando.

L'operatore address-of può essere applicato solo alle variabili con la base, la struttura, o i tipi di unione che vengono dichiarati a livello di ambito file, o ai riferimenti alla matrice formattati.In queste espressioni, un'espressione costante che non include l'operatore address-of può essere aggiunto a o essere sottratta dall'espressione di indirizzo.

Esempi

Negli esempi seguenti vengono utilizzate queste dichiarazioni:

int *pa, x;
int a[20];
double d;

Questa istruzione utilizza l'operatore address-of:

pa = &a[5];

L'operatore address-of (&) accetta l'indirizzo del sesto elemento della matrice in.Il risultato viene memorizzato nella variabile puntatore pa.

x = *pa;

l'operatore di riferimento indiretto (*) in questo esempio viene utilizzata per accedere a int valore all'indirizzo archiviato in pa.Il valore viene assegnato alla variabile Integer x.

if( x == *&x )
    printf( "True\n" );

L'esempio visualizza la parola True, e che il risultato di applicare l'operatore di riferimento indiretto all'indirizzo di x è uguale a x.

int roundup( void );     /* Function declaration */

int  *proundup  = roundup;
int  *pround  = &roundup;

una volta la funzione roundup viene dichiarato, due puntatori a roundup vengono dichiarati e inizializzati.il primo puntatore, proundup, viene inizializzata utilizzando solo il nome della funzione, mentre il secondo, pround, utilizza l'operatore address-of nell'inizializzazione.le inizializzazioni sono equivalenti.

Vedere anche

Riferimenti

L'operatore di riferimento indiretto: *

l'operatore address-of: &