Gewusst wie: Abrufen der Adresse einer Variablen (C#-Programmierhandbuch)How to: Obtain the Address of a Variable (C# Programming Guide)

Um die Adresse eines unären Ausdrucks abzurufen, der eine feste Variable ergibt, verwenden Sie den address-of-Operator:To obtain the address of a unary expression, which evaluates to a fixed variable, use the address-of operator:

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

Der address-of-Operator kann nur auf eine Variable angewendet werden.The address-of operator can only be applied to a variable. Wenn die Variable beweglich ist, können Sie eine feste Anweisung verwenden, um die Variable vorübergehen zu befestigen, um ihre Adresse abzurufen.If the variable is a moveable variable, you can use the fixed statement to temporarily fix the variable before obtaining its address.

Sie müssen sicherstellen, dass die Variable initialisiert wird.It is your responsibility to ensure that the variable is initialized. Der Compiler gibt keine Fehlermeldung aus, wenn die Variable nicht initialisiert ist.The compiler will not issue an error message if the variable is not initialized.

Sie können nicht die Adresse einer Konstanten oder eines Werts abrufen.You cannot get the address of a constant or a value.

BeispielExample

In diesem Beispiel wird ein Zeiger auf int, p, deklariert. Die Adresse einer ganzzahligen Variable, number, wird ihm zugewiesen.In this example, a pointer to int, p, is declared and assigned the address of an integer variable, number. Die Variable number wird als Ergebnis der Zuweisung zu *p initialisiert.The variable number is initialized as a result of the assignment to *p. Wenn Sie diese Zuweisungsanweisung zu einem Kommentar machen, wird die Initialisierung der Variablen number entfernt, aber kein Kompilierzeitfehler ausgestellt.If you make this assignment statement a comment, the initialization of the variable number will be removed, but no compile-time error is issued. Beachten Sie den Gebrauch des Memberzugriffsoperators -> zum Abrufen und Anzeigen der Adresse, die im Zeiger gespeichert ist.Notice the use of the Member Access operator -> to obtain and display the address stored in the pointer.

// 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 auchSee Also

C#-ProgrammierhandbuchC# Programming Guide
ZeigerausdrückePointer Expressions
ZeigertypenPointer types
TypenTypes
unsafeunsafe
fixed-Anweisungfixed Statement
stackallocstackalloc