Zeigerkonvertierungen (C#-Programmierhandbuch)
Die folgende Tabelle zeigt die vordefinierten impliziten Zeigerkonvertierungen. Implizite Konvertierungen können in zahlreichen Situationen auftreten, z. B. in Methodenaufrufen und Zuweisungsanweisungen.
Implizite Zeigerkonvertierungen
Von |
To |
---|---|
Beliebiger Zeigertyp |
void* |
null |
Beliebiger Zeigertyp |
Die explizite Zeigerkonvertierung mithilfe von Typumwandlungsausdrücken wird für Konvertierungen verwendet, für die keine implizite Konvertierung vorhanden ist. Diese Konvertierungen sind in der folgenden Tabelle zusammengefasst.
Explizite Zeigerkonvertierungen
Von |
To |
---|---|
Beliebiger Zeigertyp |
Alle anderen Zeigertypen |
sbyte, byte, short, ushort, int, uint, long oder ulong |
Beliebiger Zeigertyp |
Beliebiger Zeigertyp |
sbyte, byte, short, ushort, int, uint, long oder ulong |
Beispiel
Im folgenden Beispiel wird ein Zeiger auf int in einen Zeiger auf byte konvertiert. Beachten Sie, dass der Zeiger auf das niedrigste adressierte Byte der Variablen zeigt. Wenn Sie das Ergebnis schrittweise auf die Größe von int (4 Bytes) erhöhen, können Sie die verbleibenden Bytes der Variablen anzeigen.
// 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
*/
Siehe auch
Referenz
Zeigerausdrücke (C#-Programmierhandbuch)
Zeigertypen (C#-Programmierhandbuch)