변수를 선언할 때 const를 쓰면 해당 변수의 값을 변경할 수 없도록 합니다. 만일 const로 선언된 변수를 변경하려고 하면 컴파일 단계에서 error가 검출 됩니다. 변수에 const를 포함해 선언하는 방법은 다음과 같습니다.
xxxxxxxxxx(const) int (const) var = 10; // 아무곳에 const를 써도 됨const int var = 10; // var 변경 불가능int const var = 10; // var 변경 불가능
포인터 변수의 경우 const를 포함해 선언하는 방법은 다음과 같습니다.
xxxxxxxxxx(const) int (const) * (const) pVar = &var; // 위치에 따라 의미가 다름일반 변수의 경우 어디에 const를 사용하든지 같은 의미지만,
포인터 변수의 경우 const의 위치에 따라 다른 의미를 갖습니다.
xxxxxxxxxxint var = 10;const int *pVar1 = &var; // *pVar1 변경 불가능int const *pVar2 = &var; // *pVar2 변경 불가능int* const pVar3 = &var; // pVar3 변경 불가능const int const *pVar4 = &var; // *pVar4 변경 불가능int const * const pVar5 = &var; // *pVar5, pVar5 변경 불가능const int* const pVar6 = &var; // *pVar6, pVar6 변경 불가능규칙은 간단합니다. 변수를 선언할 때 const를 사용하면 const 오른쪽을 변경 불가능하도록 합니다.
xxxxxxxxxxint var1 = 10;int var2 = 20;int* const p1 = &var1; // p1 변경 불가능*p1 = 100; // okp1 = &var2; // error이중 포인터도 같은 원리로 여러 방법의 const를 적용할 수 있습니다.
xxxxxxxxxx(const) int (const) * (const) * (const) ppVar = &var;몇 가지 예를 들면서 마무리하겠습니다.
xxxxxxxxxxint v1 = 10;int v2 = 20;int* pV1 = &v1;int* pV2 = &v2;int* const *ppV = &pV; // *ppV 변경 불가능ppV = &pV2; // ok*ppV = &v1; // error**ppV = v2; // ok
댓글
댓글 쓰기