주소값 변화 과정 탐색

#include <stdio.h>

int j = 42; // j is a global variable

void func3() {
   int i = 11, j = 999; // here, j is a local variable of func3()
   printf("\\t\\t\\t[in func3] i @ 0x%08x = %d\\n", &i, i);
   printf("\\t\\t\\t[in func3] j @ 0x%08x = %d\\n", &j, j);
}

void func2() {
   int i = 7;
   printf("\\t\\t[in func2] i @ 0x%08x = %d\\n", &i, i);
   printf("\\t\\t[in func2] j @ 0x%08x = %d\\n", &j, j);
   printf("\\t\\t[in func2] setting j = 1337\\n");
   j = 1337; // writing to j
   func3();
   printf("\\t\\t[back in func2] i @ 0x%08x = %d\\n", &i, i);
   printf("\\t\\t[back in func2] j @ 0x%08x = %d\\n", &j, j);
}

void func1() {
   int i = 5;
   printf("\\t[in func1] i @ 0x%08x = %d\\n", &i, i);
   printf("\\t[in func1] j @ 0x%08x = %d\\n", &j, j);
   func2();
   printf("\\t[back in func1] i @ 0x%08x = %d\\n", &i, i);
   printf("\\t[back in func1] j @ 0x%08x = %d\\n", &j, j);
}

int main() {
   int i = 3;
   printf("[in main] i @ 0x%08x = %d\\n", &i, i);
   printf("[in main] j @ 0x%08x = %d\\n", &j, j);
   func1();
   printf("[back in main] i @ 0x%08x = %d\\n", &i, i);
   printf("[back in main] j @ 0x%08x = %d\\n", &j, j);
}