HOW TO:取得變數位址 (C# 程式設計手冊)
若要取得評估為固定變數的一元 (Unary) 運算式位址,請使用傳址運算子:
int number;
int* p = &number; //address-of operator &
傳址運算子只能套用至變數; 如果該變數是可移動的變數,您可以使用 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
*/