Sommario:
Definizione - Cosa significa operatore indiretto?
Un operatore di riferimento indiretto, nel contesto di C #, è un operatore utilizzato per ottenere il valore di una variabile a cui punta un puntatore. Mentre un puntatore che punta a una variabile fornisce un accesso indiretto al valore della variabile memorizzata nel suo indirizzo di memoria, l'operatore di riferimento indiretto dereferenzia il puntatore e restituisce il valore della variabile in quella posizione di memoria. L'operatore di riferimento indiretto è un operatore unario rappresentato dal simbolo (*).
L'operatore di riferimento indiretto può essere utilizzato in un puntatore a un puntatore a un numero intero, un array monodimensionale di puntatori a numeri interi, un puntatore a un carattere e un puntatore a un tipo sconosciuto.
L'operatore di riferimento indiretto è anche noto come operatore di dereference.
Techopedia spiega l'operatore indiretto
Il simbolo (*) viene utilizzato per dichiarare i tipi di puntatore e per eseguire l'indirizzamento del puntatore, mentre l'operatore 'address-of' () restituisce l'indirizzo di una variabile. Pertanto, l'operatore di riferimento indiretto e l'indirizzo dell'operatore sono inversi l'uno dall'altro.
C # consente di utilizzare i puntatori solo in un'area non sicura, il che implica che la sicurezza del codice all'interno di quella regione non è verificata dal Common Language Runtime (CLR). Nell'area non sicura, l'operatore indiretto può leggere e scrivere su un puntatore. Le seguenti istruzioni C # illustrano l'uso dell'operatore indiretto:
- int a = 1, b; // Linea 1
- int * pInt = & a; // linea 2
- b = * pInt; // riga 3
L'operatore di riferimento indiretto dovrebbe essere utilizzato per determinare un puntatore valido con un indirizzo allineato al tipo a cui punta, in modo da evitare comportamenti indefiniti in fase di esecuzione. Non deve essere applicato a un puntatore vuoto o a un'espressione che non è di tipo puntatore, per evitare errori del compilatore. Tuttavia, dopo aver lanciato un puntatore vuoto sul tipo di puntatore destro, è possibile utilizzare l'operatore di indiretta.
Quando si dichiarano più puntatori in una singola istruzione, l'operatore di riferimento indiretto deve essere scritto una sola volta con il tipo sottostante e non ripetuto per ogni nome di puntatore. L'operatore di riferimento indiretto è distributivo in C #, a differenza di C e C ++. Quando l'operatore di riferimento indiretto viene applicato a un puntatore nullo, si ottiene un comportamento definito dall'implementazione. Poiché questo operatore viene utilizzato in un contesto non sicuro, è necessario utilizzare prima la parola chiave unsafe insieme all'opzione / unsafe durante la compilazione. Questa definizione è stata scritta nel contesto di C #
