Skip to content

문제 13 · 상수 변수와 상수 포인터

문제 13 [4점]

아래 제시어에 대한 설명을 예시와 함께 서술하시오.

상수로 설정된 변수constant variable와 상수 포인터constant pointer

풀이 및 해설

상수 변수const로 선언되어 초기화 후 값을 바꿀 수 없는 변수입니다. 반드시 선언과 동시에 초기화해야 하고, 이후 대입은 컴파일 오류가 됩니다.

cpp
const int MAX = 100;   // 상수 변수
// MAX = 200;          // 오류: 상수의 값은 변경 불가

상수 포인터자료형* const로 선언되어, 가리키는 대상(주소)을 바꿀 수 없는 포인터입니다. 즉 한 번 정한 주소에 고정됩니다. 단, 그 대상의 은 바꿀 수 있습니다.

cpp
int x = 10, y = 20;
int* const p = &x;   // 상수 포인터: 항상 x를 가리킴
*p = 15;             // OK: 가리키는 대상(x)의 값은 변경 가능
// p = &y;           // 오류: 다른 주소로 바꿀 수 없음

혼동하기 쉬운 상수를 가리키는 포인터(const 자료형*)와 비교하면 방향이 반대입니다.

선언가리키는 대상 변경대상의 값 변경
int* const p (상수 포인터)불가가능
const int* q (상수를 가리키는 포인터)가능불가

const* 에 있으면 "가리키는 값"이 상수, * (변수 이름 앞)에 있으면 "포인터 자신"이 상수입니다.

👉 실습(C++)에서 확인하기

PDF