Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 포인터 데이터 형식이란 무엇일까요?

C# 포인터란 무엇인가?

포인터(pointer)는 다른 변수의 주소, 즉 메모리 위치의 직접적인 주소를 값으로 저장하는 변수입니다. 일반 변수나 상수와 마찬가지로, 포인터도 변수의 주소를 저장하기 전에 반드시 먼저 선언해야 사용할 수 있습니다.

포인터 선언 문법

포인터의 기본 선언 문법은 다음과 같습니다.

type *var-name;

다음은 포인터 타입을 선언하는 예시입니다.

int *ip;    /* 정수형을 가리키는 포인터 */
double *dp; /* double형을 가리키는 포인터 */

unsafe 한정자와 포인터 사용

C#에서는 unsafe 한정자로 표시된 함수나 코드 블록 안에서만 포인터 변수를 사용할 수 있습니다. 이렇게 작성된 코드를 비관리 코드(unmanaged code)라고 부르며, 포인터 변수를 직접 사용하는 코드 블록을 의미합니다.

참고로 unsafe 코드를 사용하려면 프로젝트 설정에서 '안전하지 않은 코드 허용' 옵션을 활성화하거나, 컴파일 시 /unsafe 옵션을 지정해야 합니다.

포인터 선언 및 사용 예제

다음은 unsafe 한정자를 사용하여 포인터 변수를 선언하고 활용하는 방법을 보여주는 예제입니다.

static unsafe void Main(string[] args) {
int var = 20;
int* p = &var;

Console.WriteLine("Data is: {0} ", var);
Console.WriteLine("Address is: {0}", (int)p);
Console.ReadKey();
}

이 예제에서는 변수 var에 20을 저장한 뒤, &(주소 연산자)를 사용해 해당 변수의 메모리 주소를 포인터 p에 담습니다. 프로그램을 실행하면 변수의 값과 함께 그 변수가 저장된 메모리 주소가 함께 출력됩니다.