개념 - 포인터와 대상의 크기

5299 단어 CC

포인터가 가리키는 대상의 크기

  • 실제 대상의 크기가 4바이트라면 포인터 변수 자료형도 4바이트로 하는 것이 일반적

int data = 0;
int *p= & data; 

포인터가 가리킬 수 있는 크기와 실제 대상이 다른 경우

  • 포인터가 가리킬 수 있는 크기와 실제 대상의 크기가 꼭 같아야 하는 것은 아님
  • 의도적으로 두 크기를 다르게 사용하는 경우도 有
  • 아래의 경우 포인터변수가 가리킬 수 있는 크기는 2바이트지만
    4바이트 크기의 대상을 가리켜도 문제가 발생하지 않는다

int data =0 ;
short *p=(short*)&data ;
  • 이를 활용해서 4바이트 변수에 저장된 값을 1바이트 단위로 출력하기도 가능

(1) p의 주소를 바꾸면서 출력하는 방식

#include <stdio.h>
void main() {
	int data = 0x12345678, i;
	char* p = (char*)&data;
	for (i = 0; i < 4; i++) {
		printf("%X,", *p);
		p++;
	}
}

(2) 첫 바이트는 *(p+0)..이런 방식으로

#include <stdio.h>
void main() {
	int data = 0x12345678, i;
	char* p = (char*)&data;
	for (i = 0; i < 4; i++) {
		printf("%X,", *(p+i));
	}
}
첫 바이트는 *(p+0), 두번째는 *(p+1), *(p+2) ....

좋은 웹페이지 즐겨찾기