블로그 이미지
송시혁

calendar

1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

Notice

Tag

Recent Post

Recent Comment

Recent Trackback

Archive

#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가 나온다.

 

 

 

 

posted by 송시혁