'c포인터'에 해당되는 글 1건

  1. 2009.06.19 C포인터와 little, big endian
예전것/프로그래밍2009. 6. 19. 17:05

(char*)&c == &c
c가 char형일때 위와같다. (char*)는 char형으로 주소 형변환을 하겠다는 의미이다.
(char*)&c +1
(int*)&c +1
은 다른 결과를 나타낸다. int형주소에 정수를 더하면 4byte씩 증가하고 char형은 1byte씩증가한다.


예제1
int n = 0x11223344;

printf("%x\n", *(char*)&n);
printf("%x\n", *(short*)&n);
printf("%x\n", *(int*)&n);

이 예제의 결과

44
3344
11223344

윗줄 프린트문에서 (char*)로 주소 형변환을 하였다. &n은 int형 주소지만 (char *)에 의해 char형으로 형변환이 된다. 이때 1byte의 공간을 * << === 가리키는 값은 44 (n에 저장된값은 16진수이다. 따라서 뒤에 두자리만.)
이렇게 메모리에 저장하는 방식을 little_endian이라한다.
44
33
22
11
메모리에 이렇게 저장함.