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
'프로그래밍 언어 > C++ [기본]' 카테고리의 다른 글
[C++기본] 18.void 포인터 (0) | 2021.09.02 |
---|---|
[C++기본] 17.const와 포인터 (0) | 2021.08.31 |
[C++기본] 15.포인터와 배열 (0) | 2021.08.30 |
[C++기본] 14.운영 체제와 포인터 (0) | 2021.08.30 |
[C++기본] 13.정적 변수와 외부 변수 (1) | 2021.08.28 |