-
반응형
포인터가 가리키는 대상의 크기
- 포인터 변수를 선언할 때 * 연산자 앞에 적는 자료형은 포인터 변수가 가리키는 대상의 크기를 의미
- 포인터 변수가 가리키는 대상의 자료형과 포인터 변수 선언 시 적는 자료형을 동일하게 지정하는 것이 일반적
포인터가 가리킬 수 있는 크기와 실제 대상의 크기가 다른 경우
- 포인터가 가리킬 수 있는 크기와 실제 대상의 크기가 다를 수 있다
- 프로그래머가 의도적으로 두 크기를 다르게 사용하는 경우도 있다
int data = 0; short *p = (short *)&data; // 포인터 변수가 가리킬 수 있는 크기는 2바이트지만 4바이트 크기의 data 변수를 가리킬 수 있다
int 형 변수에 저장된 값을 1바이트 단위로 출력하기 - ex1
#include <stdio.h> void main() { int data = 0x12345678; char *p = (char *)&data; // 4바이트 데이터를 바이트 단위로 값을 출력하기 위해 4번 반복 for(i = 0; i < 4; i++) { printf(“%X, ”, *p); //p가 가진 주소부터 1바이트 크기만 사용 p++; //p가 가리킬 수 있는 크기(1바이트)만큼 주소가 증가 } }
int 형 변수에 저장된 값을 1바이트 단위로 출력하기 – ex2 (위와 결과는 동일)
#include <stdio.h> void main() { int data = 0x12345678; char *p = (char *)&data; // 4바이트 데이터를 바이트 단위로 값을 출력하기 위해 4번 반복 for(i = 0; ii < 4; ii++) { // index addressing // 첫 바이트는 *(p+0), 두 번째 바이트는 *(p+1) ... printf(“%X, ”, *(p + i )); //p의 주소 값을 변경하지 않고, data 변수의 값을 1바이트씩 출력 } }
반응형'C' 카테고리의 다른 글
void * 형 포인터 (0) 2022.05.18 포인터 변수의 주소 연산 (0) 2022.05.16 포인터와 const 키워드 (0) 2022.05.15