c언어 자료형과 포인터에대한 문제 질문드립니다.

카이그린의 이미지

unsigned char byte;
unsigned short word;

byte *bptr = (byte*) 0x1234;
word *wptr = (word*)0x1234;

bptr++;
wptr++;

bptr==?
wptr==?

각각 0x0000,0x1235 맞나요?

라스코니의 이미지

virtual memory에서 0x1234를 가리키도록 할 수 없을 것이기 때문에 제대로 실행되지 않겠지만 특수한(?) 상황이라면
bptr은 0x1234 + sizeof(byte) 만큼 증가한 값이 되고
wptr은 0x1234 + sizeof(word) 만큼 증가한 값이 됩니다.

카이그린의 이미지

그러면 0x1235,0x1236이 되는건가요?

라스코니의 이미지

거의 그렇게 되겠네요.
모든 시스템(32bit, 64bit OS)에서 (unsigned) char는 1 byte이고 (unsigned) short는 2 byte의 사이즈를 가지니까요.

http://wiki.kldp.org/wiki.php/32bitCodeTo64bit
여기를 참고해 보세요.