본문 바로가기
C++/C++노트

[C++] const 정리

by Glory_Choi 2023. 3. 7.
반응형

const란?

const란 변수의 값을 상수임을 지정하고 프로그래머가 수정하지 못하도록 컴파일러에게 지시하는 키워드

const를 사용하게 되면 다음과 같이 값을 수정하려고 할 때 오류를 발생시킨다. 수정하면 안되는 상수를 수정하는 것이므로 오류가 발생하게 된다. 이를 잘 사용하게 되면 실수로 수정하여 프로그램을 망치는 일을 방지할 수 있다.

 

포인터와 const

포인터 변수에도 const 키워드를 사용할 수 있다.

포인터 변수에 const를 사용하게 되면 위와 같이 *연산자를 사용해 간접참조를 하여 값을 변환하려고 할 때 오류를 발생시킨다.  하지만 여기서 const는 const int*가 아닌 const int에 적용되기 때문에 주소 값은 변경이 가능하다.

 

상수 포인터

상수 포인터를 사용하면 const가 값을 변경 못하게 하지 않고 주소를 변경하지 못하게 한다. 위의 결과 처럼 ptr의 주소를 변경하려고 하면 오류를 발생시킨다. 포인터가 상수이기 때문에 포인터 값을 변경할 수가 없다. 하지만 포인터가 상수이지 포인터가 가리키는 값은 상수가 아니기 때문에 *ptr = 10과 같이 포인터가 가리키는 값을 변경하는 것은 가능하다.

 

총 정리

  • 상수를 가리키는 비 상수 포인터는 가리키는 값을 수정 불가능하지만 다른 변수를 가리키도록 자신의 주소를 바꿀 수 있다.
  • 일반 변수를 가리키는 상수 포인터는 자신이 가리키는 주소를 수정 할 수 없지만 포인터가 가리키는 값을 변경 할 수 있다.
  • 상수를 가리키는 상수 포인터는 자신이 가리키는 주소를 수정 할 수 없고 포인터가 가리키는 값도 수정 할 수 없다.
반응형

'C++ > C++노트' 카테고리의 다른 글

(C++) Array  (0) 2022.08.02
C++ 토큰 (Tokens)  (0) 2022.07.21
[C++] sort <algorithm> 사용법 정리  (0) 2022.07.18
카운팅 정렬(Counting Sort)  (0) 2022.07.08
범위 지정 연산자 ::  (0) 2022.07.04