C 언어에서 const 한정자(qualifier)는 변수를 상수로 선언할 때 사용합니다. 즉, 변수가 한 번 초기화되면 그 이후에는 값을 변경할 수 없습니다. const를 활용하면 프로그램의 안정성을 크게 높일 수 있습니다.
예를 들어, 원주율(PI)처럼 절대 변하지 않아야 하는 값이 있다고 가정해 봅시다. 프로그램의 어떤 부분에서도 이 값이 수정되는 것은 바람직하지 않습니다. 이럴 때 해당 변수를 const로 선언하면 의도치 않은 변경으로부터 안전하게 보호할 수 있습니다.
컴파일러의 동작 방식
const 한정자로 선언된 객체는 컴파일러에 의해 읽기 전용(read-only) 메모리 영역에 배치될 수 있습니다. 흥미로운 점은, 프로그램 내에서 const 객체의 주소가 한 번도 참조되지 않는다면 컴파일러가 아예 메모리에 저장하지 않을 수도 있다는 것입니다. 이는 최적화 측면에서 유용한 특성입니다.
예제 코드
#include<stdio.h>
int main() {
const int x = 10;
x = 12;
return 0;
}
실행 결과
[Error] assignment of read-only variable 'x'
위 예제에서 const int x = 10;으로 선언된 변수 x에 새로운 값 12를 할당하려 하자 컴파일 에러가 발생했습니다. 이는 x가 읽기 전용 변수이므로 값을 수정할 수 없다는 의미입니다.
이처럼 const 한정자는 개발자의 실수로 인한 값 변경을 컴파일 단계에서 미리 잡아주는 강력한 안전장치 역할을 합니다. 따라서 프로그램 실행 중 변하지 않아야 하는 값이라면 항상 const로 선언하는 습관을 들이는 것이 좋습니다.