C

[C] 구조체 주소체계

HHRR 2025. 7. 6. 23:42

구조체 포인터에 대해 알아보자.
구조체는 메모리상에 연속된 블록으로 저장되고, 그 주소가 가리키는 포인터를 선언하여 접근할 수 있다.
 
목표
1. 구조체 정의 >> 선언 >> 초기화
2. 구조체 포인터 선언 및 멤버 접근
3. 각 멤버의 메모리 주소와 값 확인
4. 구조체 메모리 레이아웃 해석
 
 
간단한 구조체를 선언하고 메모리 구조를 살펴보자.

struct Person {
    char name[20]; // 20bytes
    int age; // 4bytes
    float height; // 4bytes
};
    struct Person p1;
    struct Person *ptr;

    // 포인터 변수 초기화
    ptr = &p1;

    // 구조체 멤버 값 설정
    strcpy(p1.name, "hrkim");
    p1.age = 25;
    p1.height = 162.5;

 

멤버 접근 방식

1. 직접 접근 : p1.age (일반 구조체 변수)
2. 포인터 접근 : (*ptr).age or ptr->age (구조체 포인터 변수)
 

메모리 배치

멤버주소 offset크기
name+020 bytes
age+204 bytes
height+244 bytes
  28 bytes 
(패딩 없을 경우)