구조체 멤버에는 점 연산자 .로 접근하고, 구조체 포인터에는 화살표 연산자 ->로 접근한다.
#include <stdint.h>
#include <stdio.h>
typedef struct {
uint8_t rsv0;
uint8_t rsv1;
uint8_t rsv2;
uint8_t rsv3;
uint8_t rsv4;
} MyStruct;
int main(void) {
MyStruct value = { 0, 1, 2, 3, 4 };
MyStruct *ptr = &value;
printf("%u, %u, %u, %u, %u\n", ptr->rsv0, ptr->rsv1, ptr->rsv2, ptr->rsv3, ptr->rsv4);
}구조체 전체를 uint8_t *로 변환해 순회하는 방식은 멤버 사이 패딩과 정렬 규칙에 영향을 받는다. 통신 패킷이나 레지스터처럼 바이트 단위 레이아웃이 필요한 경우에는 컴파일러 규칙과 명시적인 직렬화 방식을 함께 검토한다.
댓글을 불러오고 있습니다.