방법: 변수의 주소 가져오기(C# 프로그래밍 가이드)
fixed 변수로 계산되는 단항 식의 주소를 얻으려면 주소 연산자를 사용합니다.
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
*/