Procedura: ottenere l'indirizzo di una variabile (Guida per programmatori C#)
Per ottenere l'indirizzo di un'espressione unaria, che restituisce una variabile fissa, utilizzare l'operatore address-of:
int number;
int* p = &number; //address-of operator &
L'operatore address-of può essere applicato solo a una variabile. Se la variabile è spostabile, è possibile utilizzare l' istruzione fissa per correggere temporaneamente la variabile prima di ottenerne l'indirizzo.
È compito del programmatore garantire che la variabile venga inizializzata. Il compilatore non genererà un messaggio di errore se la variabile non è inizializzata.
Non è possibile ottenere l'indirizzo di una costante o di un valore.
Esempio
In questo esempio viene dichiarato un puntatore a int, p, a cui viene assegnato l'indirizzo di una variabile integer number. La variabile number viene inizializzata in seguito all'assegnazione a *p. Se si trasforma l'istruzione di assegnazione in un commento, verrà rimossa l'inizializzazione della variabile number, ma non verrà generato alcun errore in fase di compilazione. Si noti l'utilizzo dell'operatore di accesso ai membri -> per ottenere e visualizzare l'indirizzo archiviato nel puntatore.
// compile with: /unsafe
class AddressOfOperator
{
static void Main()
{
int number;
unsafe
{
// Assign the address of number to a pointer:
int* p = &number;
// Commenting the following statement will remove the
// initialization of number.
*p = 0xffff;
// Print the value of *p:
System.Console.WriteLine("Value at the location pointed to by p: {0:X}", *p);
// Print the address stored in p:
System.Console.WriteLine("The address stored in p: {0}", (int)p);
}
// Print the value of the variable number:
System.Console.WriteLine("Value of the variable number: {0:X}", number);
System.Console.ReadKey();
}
}
/* Output:
Value at the location pointed to by p: FFFF
The address stored in p: 2420904
Value of the variable number: FFFF
*/
Vedere anche
Riferimenti
Espressioni puntatore (Guida per programmatori C#)
Tipi di puntatori (Guida per programmatori C#)
Istruzione fixed (Riferimenti per C#)
stackalloc (Riferimenti per C#)