Freigeben über


Gewusst wie: Abrufen der Adresse einer Variablen (C#-Programmierhandbuch)

Aktualisiert: November 2007

Sie können den Adressoperator verwenden, um die Adresse eines unären Ausdrucks abzurufen, der eine fixierte Variable ergibt.

int number;
int* p = &number; //address-of operator &

Der Adressoperator kann nur auf eine Variable angewendet werden. Wenn die Variable verschiebbar ist, können Sie die fixed-Anweisung verwenden, um die Variable vorübergehend zu fixieren, bevor Sie ihre Adresse abrufen.

Sie müssen dabei selbst sicherzustellen, dass die Variable initialisiert wird. Der Compiler zeigt keine Fehlermeldung an, wenn die Variable nicht initialisiert wird.

Die Adresse einer Konstante oder eines Werts kann nicht abgerufen werden.

Beispiel

In diesem Beispiel wird der Zeiger p deklariert, der auf int zeigt. Anschließend wird dem Zeiger die Adresse der ganzzahligen Variablen number zugewiesen. Die Variable number wird als Resultat der Zuweisung zu *p initialisiert. Durch Auskommentieren dieser Zuweisung wird die Initialisierung der Variablen number entfernt, aber es wird kein Kompilierungsfehler ausgegeben. Beachten Sie die Verwendung des Operators für den Memberzugriff (->), um die im Zeiger gespeicherte Adresse abzurufen und anzuzeigen.

// 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
*/

Siehe auch

Konzepte

C#-Programmierhandbuch

Referenz

Zeigerausdrücke (C#-Programmierhandbuch)

Zeigertypen (C#-Programmierhandbuch)

unsafe (C#-Referenz)

fixed-Anweisung (C#-Referenz)

stackalloc (C#-Referenz)

Weitere Ressourcen

Typen (C#-Referenz)