다음을 통해 공유


방법: 변수의 주소 가져오기(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
*/

참고 항목

참조

포인터 식(C# 프로그래밍 가이드)

포인터 형식(C# 프로그래밍 가이드)

unsafe(C# 참조)

fixed 문(C# 참조)

stackalloc(C# 참조)

개념

C# 프로그래밍 가이드

기타 리소스

형식(C# 참조)