2

다음과 같은 C 코드가 왜이렇게 동작할까요??

https://learn.dreamhack.io/16#41 에 나온 코드를 공부하던중 이해가 가지 않아 질문 드립니다.

#include <stdio.h>
long *ptr;
int main(){
    int N = 100;
    
    // ptr의 값을 변경
    ptr = (long)&ptr - sizeof(long) * N;
    printf("%x\n", ptr); // 891cb838
    
    // ptr[N]에 값 쓰기
    ptr[N] = 1234;
    printf("%x\n", ptr); // 4d2
    return 0;
 }

위 코드를 수행하면, 제가 생각하기엔 ptr의 값은 처음에 변경한 값 그대로고,
ptr + N의 위치 값만 바뀌어야 할것 같은데 ptr의 값 자체가 바뀌더군요.
왜 그럴까요???

답변 0개