구조체 포인터에 대해 알아보자.
구조체는 메모리상에 연속된 블록으로 저장되고, 그 주소가 가리키는 포인터를 선언하여 접근할 수 있다.
목표
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 | +0 | 20 bytes |
age | +20 | 4 bytes |
height | +24 | 4 bytes |
28 bytes (패딩 없을 경우) |

'C' 카테고리의 다른 글
[C] 메모리 관리 원칙 (5) | 2025.07.12 |
---|---|
[C] 동적 메모리 할당이란? (Dynamic Memory Allocation) (2) | 2025.07.12 |
[C] 예외처리, 오류처리 (7) | 2025.06.29 |
[C] 헷갈리는 연산자 우선순위 (6) | 2025.06.24 |
[C] 메모리 초기화 함수 bzero(), memset() (6) | 2025.06.22 |