(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
메모리에 이렇게 저장함.
'예전것 > 프로그래밍' 카테고리의 다른 글
매개 변수 2을(를) 'const char [29]'에서 'LPCWSTR'(으)로 변환할 수 없습니다. (0) | 2009.09.11 |
---|---|
배열과 포인터에 관한문제 (0) | 2009.06.25 |
포인터 세번째, 여러가지 포인터 비교 (0) | 2009.06.25 |
포인터와 함수. (0) | 2009.06.23 |
C 포인터 와 scanf buf에 대해 (0) | 2009.06.23 |