|
안녕하세요? 레조입니다.
도스에서는 int가 16bit 즉, 2byte로 증가합니다.
그래서 포인터 선언에서 far라는 키워드를 사용했었고요.
윈도우로 넘어오면서 int는 32bit(OS가 32bit이니..)으로 바뀐것입니다.
OS에서 처리하는 단위가 32비트 운영체제로 바뀌면서 같이 변한것입니다.
즉, 도스에서 테스트 한다면 2byte씩 증가할 것입니다.
하지만 앞으로의 추세로는 32비트 그리고 64비트 이런 식으로 증가할 것이니
그에맞게 int의 크기도 늘어날 것입니다.
(흠.. 호환성을 위해 int 타입을 썻다고 읽은 기억이 나는데..
제대로된 기억인지.. 잘 기억이 않나네요.. -_-;)
ps.
다른 분들의 답변을 기다리며~ ^^
환타 님이 쓰신 글 :
: 별것 아닌 것 같지만.. 잘 이해가 안되서요..
: 수고스럽더라도 답변 부탁드립니다..
:
: #include <stdio.h>
: #include <alloc.h>
: main()
: {
: int*p;
: int i;
: p = (int*)malloc(sizeof(int));
: p =p+ 20;
: printf("\np : %d 번지\n",p);
:
: for (i=0 ; i<6 ; i++)
: printf("\n %d 번지 : %x", p+i , *(p+i));
: }
:
: 이렇게 해서 컴파일을 해보면...
:
: 우선 주소값을 그냥 100이라고 봤을때..
:
: 100 번지 : 0
: 102 번지 : 0
: 이런식으로 나올꺼라 생각했는데요..
:
: 그렇게 안나오네요..
:
: 100 번지 : 0
: 104 번지 : 0
:
: int 형으로 포인터를 선언해주면.. 2바이트씩 건너 뛰어야 하는게 아닌지..
:
: long형으로 선언해줘도 똑같구요..
:
: 그렇다면 int 형으로 선언한거랑 무슨 차이가 있는지..ㅡㅡ;
:
: 아래글보니.. c랑 c++이랑 포인터에 약간의 차이가 있다는데..
:
: 혹시 이런게 차이가 있는것은 아니겠죠?
:
: 아시는 분의 답변 기다리겠습니다..
|