方法: 変数のアドレスを取得する (C# プログラミング ガイド)
固定変数に評価される単項式のアドレスを取得するには、アドレス演算子を使用します。
int number;
int* p = &number; //address-of operator &
アドレス演算子は、変数にのみ適用できます。変数が可変変数である場合は、固定ステートメントを使用して、アドレスを取得する前に一時的に変数を固定します。
変数は、確実に初期化してください。変数が初期化されていない場合、コンパイラはエラー メッセージを発行しません。
定数や値のアドレスは取得できません。
使用例
次の例では、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
*/