Conversioni di puntatori (Guida per programmatori C#)
Nella tabella che segue sono illustrate le conversioni di puntatori implicite già definite. Le conversioni implicite possono avere luogo in numerose situazioni, incluse le chiamate a metodi e le istruzioni di assegnazione.
Conversioni di puntatori implicite
Da |
Per |
---|---|
Qualsiasi tipo di puntatore |
void* |
null |
Qualsiasi tipo di puntatore |
La conversione di puntatori esplicita consente di eseguire conversioni in puntatori per i quali non esiste alcuna conversione implicita, utilizzando un'espressione cast. Tali conversioni sono illustrate nella tabella che segue.
Conversioni di puntatori esplicite
Da |
Per |
---|---|
Qualsiasi tipo di puntatore |
Qualsiasi altro tipo di puntatore |
sbyte, byte, short, ushort, int, uint, long oppure ulong |
Qualsiasi tipo di puntatore |
Qualsiasi tipo di puntatore |
sbyte, byte, short, ushort, int, uint, long oppure ulong |
Esempio
Nell'esempio riportato di seguito un puntatore a int viene convertito in un puntatore a byte. Si noti che il puntatore punta al byte della variabile con l'indirizzo più basso. Quando si incrementa successivamente il risultato, fino a raggiungere la dimensione di int (4 byte), è possibile visualizzare i byte rimanenti della variabile.
// compile with: /unsafe
class ClassConvert
{
static void Main()
{
int number = 1024;
unsafe
{
// Convert to byte:
byte* p = (byte*)&number;
System.Console.Write("The 4 bytes of the integer:");
// Display the 4 bytes of the int variable:
for (int i = 0 ; i < sizeof(int) ; ++i)
{
System.Console.Write(" {0:X2}", *p);
// Increment the pointer:
p++;
}
System.Console.WriteLine();
System.Console.WriteLine("The value of the integer: {0}", number);
// Keep the console window open in debug mode.
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
}
}
/* Output:
The 4 bytes of the integer: 00 04 00 00
The value of the integer: 1024
*/
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#)