반응형
구조체로 만든 자료형을이용해 데이터를 읽고자 할때 병렬이동시 읽어오는 방법은 익히 알고 있듯 '. ' 방식이 있고 '->' 방식이 있다..
#include <stdio.h>
//#define info ((struct st *)0x100)
unsigned char buf[] = {0x4d,0x4d,0x55,0x5f,0x45,0x6e,0x61,0x62,0x6c,0x65,0x44,0x43,0x61,0x63,0x68,0x65};
#define info ((struct st *)buf)
struct st
{
unsigned char x;
unsigned char y;
unsigned short length;
};
void main(void)
{
int i;
for(i=0; i<4; i++)
{
printf("0x%x, 0x%x, 0x%x\n", (info+i)->x, (info +i)->y, (info+i)->length); //주소를 사칙연산하여 병렬이동
printf("0x%x, 0x%x, 0x%x\n", info[i].x, info[i].y, info[i].length); //주소를 []연산자를 이용해 병렬이동
}
}
위 예시를 보면 결국 char로 읽으려던 것을 struct st로 캐스팅하여 4 byte씩 읽겠다는 것인데, 점을 쓰기 위해 info[0]을 쓰면 buf 원본의 첫 4 byte 자료가 구조체 변수로 잡히고 그것을 점을 이용해 내부를 살핀다. 이때 info[1]은 *(info+1)로 보면 된다.
하지만 info라는 주소 자체를 사용하면 ->를 써준다.
반응형
'배우는 과정 > 코딩공부' 카테고리의 다른 글
API란 무엇일까? localhost? (0) | 2024.11.19 |
---|---|
데이터 엔지니어(DE)가 배우면 좋은 것들 (0) | 2024.11.13 |
데이터 개발자들이 사용하는 데이터베이스(DB)의 종류 (1) | 2024.11.11 |
구조체 자료형 포인터로 casting하는 이유 (1) | 2024.02.07 |
구조체에 비트필드 구조체 넣기 (0) | 2024.02.07 |
댓글