포인터 변수의 const

Dohun Lee·2025년 7월 17일

C/C++

목록 보기
2/34
post-thumbnail

포인터을 대상으로 하는 const 선언

변수를 선언할때 const 키워드를 붙인다면, 해당 변수의 값을 변경하는것을 허락하지 않겠다는 의미이다. 하지만, 만약 포인터에 const 키워드가 붙는다면 무슨 의미일까?

포인터 변수에 붙는 const 키워드는 포인터 변수를 선언할때 어느 위치에 const 변수가 붙는지에 따라 다른 의미를 지닌다.

포인터 변수 앞의 const 키워드

int num = 10;
const int* ptr = #

위와 같이 const 키워드를 포인터 변수 제일 앞에 붙인다면, 이 의미는 포인터에 할당된 주소가 가르키는 값, 즉, 변수의 값을 바꾸는것을 허락하지 않겠다는 의미이다.

위 코드를 예시로 들어보자면, ptr에 num의 주소를 할당하고 있는데, 이때 ptr을 const int*의 형태로 선언하였으므로, ptr을 통해 num의 값을 바꾸는것을 허락하지 않겠다는 의미이다.

포인터 타입 뒤의 const 키워드

int num = 10;
int* const ptr = #

위 변수는 앞서 설명했던 상수화된 포인터와 다른 의미를 지닌다. 앞선 포인터 변수는 저장된 값을 바꾸는것을 허락하지 않겠다는 의미였지만, 위와 같은 형태로 포인터 변수를 선언하게 되면, 포인터 변수 자체에 할당된 주소를 바꾸는 것을 허락하지 않겠다는 의미이다.

위 코드를 예시로 보자면, ptr을 통해서 num의 값을 바꾸는 것은 허용되지만, ptr 자체에 할당된 주소값을 바꿀수는 없다. 즉 아래와 같은 상황이 허락되지 않는다는 것이다.

int num2 = 10;
ptr = &num2; // 컴파일 에러 발생
profile
미국 공대생

0개의 댓글