C언어 구조체 선언 및 포인터 접근 예제

구조체 멤버에는 점 연산자 .로 접근하고, 구조체 포인터에는 화살표 연산자 ->로 접근한다.




#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 *로 변환해 순회하는 방식은 멤버 사이 패딩과 정렬 규칙에 영향을 받는다. 통신 패킷이나 레지스터처럼 바이트 단위 레이아웃이 필요한 경우에는 컴파일러 규칙과 명시적인 직렬화 방식을 함께 검토한다.

Comments

댓글을 불러오고 있습니다.