프로그래밍 언어/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