JINTBEAT Design Life

C언어 공부 - 포인터 변수가 참조하는 대상의 변경을 허용하지 않는 const 선언 본문

🖥️ - C language

C언어 공부 - 포인터 변수가 참조하는 대상의 변경을 허용하지 않는 const 선언

jintbeat_design 2025. 5. 18. 01:32
반응형

포인터 변수를 대상으로도 const 선언을 할 수 있다.

 

const int * ptr = &num ;

 

 

다음과 같이 컴파일 에러가 발생한다. 

 

✏️ const 선언은 "포인터 변수 ptr을 이용해서 ptr이 가리키는 변수에 저장된 값을 변경하는 값을 허용하지 않겠다" 는 의미이다. 

 

그렇다고 해서 포인터 변수 ptr이 가리키는 변수 num이 상수화 되는 것은 아니다. 

 

num = 40; 처럼 변수 num에 저장된 값을 변경하는 것은 허용이 된다. 

 

그럼 무슨 의미인가? 포인터 변수가 상수라는 뜻은 한번 주소 값이 저장되면 그 값의 변경이 불가능하다는 뜻이며, 이는 한번 가리키기 시작한 변수를 끝까지 가리켜야 한다는 뜻으로 이해할 수 있다.

 

✏️ 포인터 변수의 상수화 - const 선언은 포인터 변수의 이름 앞에 올 수 있다.

int * const ptr = &num ;

 

이렇게 되면 포인터 변수 ptr은 상수가 된다. 포인터 변수 ptr이 상수라는 뜻은 한번 주소 값이 저장되면 그 값의 변경이 불가능하다는 뜻이며, 이는 한번 가리키기 시작한 변수를 끝까지 가리켜야 한다는 뜻으로도 이해할 수 있다.

 

✏️ 하나의 포인터 변수를 대상으로 두 가지 형태의 const 선언을 동시에 할 수도 있다.

const int * const ptr = &num ;

✏️ const 선언이 갖는 의미

const 선언이 특별한 기능을 제공하는 것은 아니지만, const 선언을 많이하면 그만큼 프로그램의 안전성은 높아진다.

 

 

 

반응형