如何:获取变量的地址(C# 编程指南)
要获取计算结果为固定变量的一元表达式的地址,请使用 address-of 运算符:
int number;
int* p = &number; //address-of operator &
address-of 运算符仅适用于变量。 如果该变量是可移动变量,则在获取其地址之前,可以使用 fixed 语句暂时固定此变量。
确保初始化该变量是程序员的责任。 如果变量未初始化,编译器不会发出错误消息。
不能获取常数或值的地址。
示例
此示例声明一个指向 int 的指针 p,并将整数变量 number 的地址赋值给该指针。 给 *p 赋值的结果是初始化变量 number。 如果对此赋值语句进行注释,则将取消对变量 number 的初始化,但是不会发出编译时错误。 注意该示例如何使用成员访问运算符 -> 来获取和显示存储在指针中的地址。
// 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
*/