개념 - 포인터와 대상의 크기
포인터가 가리키는 대상의 크기
- 실제 대상의 크기가 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) ....
Author And Source
이 문제에 관하여(개념 - 포인터와 대상의 크기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@myway00/C-개념-포인터와-대상의-크기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)