이런 분들이 찾고 있어요
이 레슨과 관련된 학습 키워드
코드를 읽고 설명하면, 합격합니다
이 레슨과 관련된 학습 키워드
C 프로그래밍 — 하드웨어에 가장 가까운 언어 → 포인터와 메모리
1# C 문법 (의사코드 스타일 설명)2# struct 키워드 + 태그이름 { 멤버들 };3struct Student {4 char name[50];5 int age;6 float gpa;7};오늘은 C 언어의 구조체가 무엇인지 알아보겠습니다.
구조체는 서로 다른 타입의 변수들을 하나로 묶는 타입입니다.
슬라이드 상단을 보시면 배열과 구조체를 비교하고 있습니다.
왼쪽 배열은 같은 타입만 저장할 수 있습니다.
int 배열이라면 모든 칸이 int 타입이어야 하죠.
반면 오른쪽 구조체를 보시면 char, int, float이 함께 있습니다.
이게 구조체의 핵심입니다.
왜 구조체가 필요한지 생각해 볼까요?
학생 정보를 배열 세 개로 따로 관리하면 실수가 생깁니다.
구조체를 쓰면 Student 하나에 모든 필드를 묶을 수 있어요.
그림 중간 왼쪽을 보세요.
struct Student 중괄호 안에 멤버들을 선언합니다.
이 정의가 바로 데이터의 틀, 블루프린트입니다.
char name, int age, float gpa를 하나의 단위로 묶는 거죠.
중간 가운데를 보시면 변수 선언과 초기화 방법이 나옵니다.
s1 변수에 이름, 나이, 학점을 한 번에 초기화할 수 있어요.
typedef를 쓰면 매번 struct 키워드를 생략할 수 있습니다.
중간 오른쪽을 보시면 멤버 접근 방법이 두 가지입니다.
직접 접근할 때는 점 연산자, s1.age처럼 씁니다.
포인터로 접근할 때는 화살표 연산자 ptr 화살표 age를 씁니다.
이는 별표 ptr 점 age와 같은 표현입니다.
CPU 정렬 때문에 패딩이 삽입될 수 있다는 점도 중요합니다.
name 50바이트 뒤에 2바이트 패딩이 생기는 예시가 보이죠.
그래서 sizeof Student는 60바이트가 됩니다.
하단을 보시면 실세계 모델링 사례들이 나와 있습니다.
네트워크 패킷, 게임 캐릭터, 파일 메타데이터, 학생 정보 등입니다.
이처럼 구조체는 실세계 모델을 표현하는 데 아주 적합합니다.
구조체는 이질적 데이터의 논리적 묶음이라는 점이 핵심입니다.
메모리 패딩을 이해해야 sizeof 결과를 정확히 예측할 수 있습니다.