#include <stdio.h> int main() { int x; int *xp; x = 5; xp = &x; printf("%08x\n", &x); printf("%08x\n", *xp); printf("%08x\n", &xp); x = *xp + 24; printf("%d\n", x); printf("%08x\n", &x); printf("%08x\n", *xp); printf("%08x\n", &xp); printf("%08x\n", *(xp+1)); return 0; }
printf("%08x\n", *(xp+1));
이 프린트문에서 *(xp+1)는 쓰레기값이다!!!
그냥 xp는 x의 주소를 가져오고 그 주소값에서 1을 더하면
주소값의 1을 더한 주소에 값을 가져오게 된다. 그래서
그 주소 따로 값이 없기때문이다. 미정값으로 출력된다.
그러니깐 x의 주소 0012ff74+1을 한 주소가 있는데 거기
에서 *가 값을 가져온것이다. 0012ff74+1의 값은 미정값이다.
(x +1)로 하거나 아니면
*(xp)+1로 수정하면 30의 16진수인 1E가 나온다.
|