더듬이의 헬로월드

Hello, World!

프로그래밍 언어/C++ [기본]

[C++기본] 16.const, 상수

더듬이 2021. 8. 31. 15:05
728x90

변수와 상수

int value=500;

const int value = 500;

위의 두 코드는 어떻게 다를까?

위의 value변수는 항상 값이 바뀔 수 있는 변수이지만,

자료형 앞에 const를 붙혀 선언한 변수는 값이 바뀌지 않는 상수로 취급된다.

여기서, 주의해야 할 점이 있다.

const을 이용해 선언한 상수는 변수가 상수화 된 것이지, 처음부터 고정된 상수가 아니라는 점이다.

const int value=500;
value=300;

이는 컴파일러가 자동으로 문법적 오류를 잡아준다.

500=300;

과 같아져 버리기 때문이다.

그럼, const로 상수화된 변수의 값을 바꾸는 것은 정말 불가능 할까?

⇒const상수는 이후의 문법적으로 값을 바꾸지 못하게 막아주는 것이다.


주소로 접근해볼까?

const int value = 500;
int* p_val = (int*)&value;
*p_val = 1000;

value는 상수로 선언되었지만, int형 포인터 p_val은 상수의 주소를 가져와서,

주소를 참조해서 값을 변경해 주었다.

이럴 경우 아무리 상수로 선언된 value라도, 값은 1000으로 바뀌게 될 것이다.

728x90