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이 출력됩니다. 혹시나 싶어서 포인터의 값과 정수변수의 주소값을 확인해보니 일치하였습니다. 어떻게 이런게 가능한 것인가요?
0 말고 다른 값으로 하면 어떻게 되나요?
확장자가 *.c 이냐 *.cpp(*.cc) 이냐에 따라 다른 결과가 나옵니다.
유사한 질문을 올린 사람도 있고 어셈블리 레벨에서 답변해 주신분도 있네요. 아래 링크 참조하시면 도움이 될 것 같습니다.
http://www.daniweb.com/software-development/cpp/threads/53814
많은 도움이 되었습니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
0 말고 다른 값으로 하면 어떻게 되나요?
0 말고 다른 값으로 하면 어떻게 되나요?
c와 c++ 의 차이점
확장자가 *.c 이냐 *.cpp(*.cc) 이냐에 따라 다른 결과가 나옵니다.
유사한 질문을 올린 사람도 있고 어셈블리 레벨에서 답변해 주신분도 있네요. 아래 링크 참조하시면 도움이 될 것 같습니다.
http://www.daniweb.com/software-development/cpp/threads/53814
링크감사합니다.
많은 도움이 되었습니다.
댓글 달기