제가 요즘 들어 어셈블리를 배우면서
"아.. 지금 내가 배우는 이 것이 과연 미래에 도움이 될까?"
하는 생각을 하게 되었습니다.
제가 현재 어셈블리에 지름신 강림하듯 투자했습니다.(한꺼번에 산 건 아닌데 너무 비싸..)
심지어 영문서적까지 사버렸습니다.(다행인건 어느정도 알아듣는다는 것)
그래서 더 걱정됩니다. -_-;;
용기를 북돋아달라는 것은 아닙니다.
제가 지금 하는 이 짓(?)이 과연 올바른 행동인지, 과연 미래에 도움이 될지
그것만 자세히좀 알려주시면 감사하겠습니다.
아 그리고 간단한 질문..
int a[3][2]={{1,2},{10,20},{100,200}}
int (*b)[2];
b=a;
대략 이런 설정이 되어있고
printf("%#010x %#010x \n", )
printf("%#010x %#010x \n", )
printf("%#010x %#010x \n", )
대략 이런 걸 출력했더니 책에서의 결과는
0x8047d10 0x8047d10
0x8047d18 0x8047d14
0x8047d20 0x8047d18
그러나 우리집에서의 결과는
0x0000ffd0 0x0000ffd0
0x0000ffd4 0x0000ffd2
0x0000ffd8 0x0000ffd4
이렇게 나왔습니다.
저는 당연히 서로의 주소의 차이가 같을거라 생각했는데
책에서는 4, 8정도 차이가 났고 우리집에서는 2, 4정도 차이가 나더군요.
"별로 상관 없겠지"라고 생각했는데 은근히 궁금한 게.. -_-
아 그리고
int a[3][2]={{1,2},{10,20},{100,200}}
int (*b)[2];
b=a;
아까랑 같이 이런 설정이 되어있을 때
b, b+1, b+2의 결과를 볼 순 없을까요?
printf("%d\n", b+1); 했는데 이상한 결과가 나오네요.
&도 붙여보고 *도 붙여보고 별 짓을 다 해봐도 안 나오더군요.
쓰여진 프로그램은 Turbo C 2.01입니다.
쓰다 보니 배보다 배꼽이 더 커버렸네요.
|