프로그래밍 언어/C#

C# 포인터 사용

ShovelingLife 2023. 7. 16. 13:52

C#에서는 포인터를 안전하지 않은(unsafe) 형식으로 지정하여 표면적으로는 지원하지 않고 있지만 기존의 C++의 라이브러리 등의 외부 라이브러리를 사용한다던가 프로그램의 비약적인 성능향상의 목적을 위해 사용할 필요성을 가지게 된다. 이러한 포인터를 사용하기 위해서는 다음과 같은 절차를 거쳐야 사용할 수 있다.  

 

1. 솔루션설정변경

생성한 솔루션에서 설정메뉴를 통해 들어간 뒤 빌드를 확인하면 위와 같이 안전하지 않은 코드를 사용할 수 있는 체크박스를 확인할 수 있다. 이 항목을 체크하면 솔루션 내에서 포인터를 사용할 수 있는 조건을 만들어 주게 된다.

 

2. unsafe 블럭 생성

class Program
    {

        static void Main(string[] args)
        {
            int number = 10;
            unsafe // 포인터를 사용하기 위해 unsafe로 블럭을 생성한다.
            {

                int* p = &number; // number의 주소를 p에 대입

                Console.WriteLine("number의 값:{0},포인터의 값:{1}", number, *p); 

                // 각각의 값을 출력
            }
        }

    }

위와 같이 포인터를 사용하고자 하는 공간에 unsafe 라는 키워드로 감싸주면 C++에서 처럼 포인터를 선언하고 사용할 수 있다.

 

연산자는 마찬가지로 값을 출력할때는 * , 주소를 가져올때는 &를 사용하게 되지만 C#에서는 직접적으로 상수나 값의 주소를 출력 할 수 없다고 한다. (MSDN 참조)

 

출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=crusaderholy&logNo=100109538500