[완료]const 변수값 변경 관련해서 질문드립니다

Pike의 이미지

int main()
{
const int test = 0;
int* p_test = (int*)&test;

*p_test += 1;

printf("%d\n", test);
printf("%d\n", *p_test);

return 0;
}

해당코드를 실행하면 컴파일 에러가 뜨는게 아니라 0,1이 출력됩니다.
혹시나 싶어서 포인터의 값과 정수변수의 주소값을 확인해보니 일치하였습니다.
어떻게 이런게 가능한 것인가요?

peecky의 이미지

0 말고 다른 값으로 하면 어떻게 되나요?

익명 사용자의 이미지

확장자가 *.c 이냐 *.cpp(*.cc) 이냐에 따라 다른 결과가 나옵니다.

유사한 질문을 올린 사람도 있고 어셈블리 레벨에서 답변해 주신분도 있네요. 아래 링크 참조하시면 도움이 될 것 같습니다.

http://www.daniweb.com/software-development/cpp/threads/53814

Pike의 이미지

많은 도움이 되었습니다.