更新:2007 年 11 月

要获取计算结果为固定变量的一元表达式的地址,请使用 address-of 运算符:

 复制代码
int number;
int* p = &number; //address-of operator &

address-of 运算符仅适用于变量。如果该变量是可移动变量,则在获取其地址之前,可以使用 fixed 语句暂时固定此变量。

确保初始化该变量是程序员的责任。如果变量未初始化,编译器不会发出错误消息。

不能获取常数或值的地址。

示例

此示例声明一个指向 int 的指针 p,并将整数变量 number 的地址赋值给该指针。给 *p 赋值的结果是初始化变量 number。如果对此赋值语句进行注释,则将取消对变量 number 的初始化,但是不会发出编译时错误。注意该示例如何使用成员访问运算符 -> 来获取和显示存储在指针中的地址。

C# 复制代码
// compile with: /unsafe

C# 复制代码
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
*/

请参见