반응형
C언어에서 다양한 데이터를 하나의 단위로 묶어주고 싶다면?
바로 구조체(struct)를 사용해야 할 때입니다!
이번 강의에서는 구조체의 선언, 초기화, 포인터 활용까지
실전 예제와 함께 자세히 알아봅니다.
🧱 구조체란?
서로 다른 타입의 데이터를 하나로 묶어서 다루기 위한 사용자 정의 데이터 타입
📌 구조체 선언 기본 문법
struct 구조체이름 {
자료형 멤버1;
자료형 멤버2;
...
};
✅ 예시
struct Student {
char name[20];
int age;
float grade;
};
📝 구조체 변수 선언 및 초기화
struct Student s1 = {"Alice", 20, 92.5};
- s1.name → "Alice"
- s1.age → 20
- s1.grade → 92.5
📌 구조체 멤버 접근
printf("%s\n", s1.name);
s1.age = 21;
- 점(.) 연산자를 이용하여 멤버에 접근하거나 값을 수정
📘 구조체 배열 사용 예제
struct Student students[2] = {
{"Tom", 18, 85.5},
{"Jane", 19, 88.0}
};
printf("학생 1 이름: %s\n", students[0].name);
🔄 구조체와 함수
✅ 구조체를 함수 인자로 전달
void printStudent(struct Student s) {
printf("이름: %s, 나이: %d\n", s.name, s.age);
}
→ 구조체는 값 복사 방식으로 전달되므로, 크기가 클 경우 포인터 전달이 효율적
📌 구조체 포인터 사용
struct Student s1 = {"Eric", 22, 90.0};
struct Student *p = &s1;
printf("%s\n", p->name); // 또는 (*p).name
- -> 연산자를 사용하여 포인터가 가리키는 구조체 멤버에 접근
🎓 typedef와 구조체 함께 쓰기
typedef struct Student {
char name[20];
int age;
} Student;
Student s1 = {"Min", 23};
→ typedef를 사용하면 struct 키워드 없이 사용 가능 (더 간결)
💡 구조체 실습: 간단한 학생 관리 프로그램
#include <stdio.h>
typedef struct {
char name[20];
int age;
float score;
} Student;
int main() {
Student s = {"Yuna", 21, 87.5};
printf("이름: %s\n나이: %d\n점수: %.2f\n", s.name, s.age, s.score);
return 0;
}
📘 요약 정리
키워드 설명
struct | 사용자 정의 자료형 생성 |
. | 구조체 멤버 접근 |
-> | 포인터가 가리키는 구조체 멤버 접근 |
typedef | 구조체 별칭 생성 |
🎯 실습 과제
- Book, Employee, Product 등의 구조체 정의해보기
- 구조체 배열을 이용해 정보 저장 및 출력
- 구조체 포인터를 사용하여 멤버 정보 수정
🗣 다음 주 예고: 파일 입출력 기본 – fopen, fprintf, fscanf 완벽 가이드
C언어의 또 하나의 강력한 기능!
다음 강의에서는 파일을 열고, 읽고, 쓰는 방법을 소개합니다.
실제 프로그램 제작에 한 발 더 가까워지는 시간! 기대해주세요.
반응형
'C언어 > C 언어 중급' 카테고리의 다른 글
중급8강_C언어 파일 입출력 완벽 가이드 – fopen부터 fprintf까지 (3) | 2025.04.23 |
---|---|
중급6강_C언어 문자열 함수 완전 정리 – 포인터로 문자열을 자유자재로 다루자! (0) | 2025.04.21 |
중급5강_C언어 함수 포인터 완전정복 – 콜백 함수의 핵심 개념 쉽게 배우기! (0) | 2025.04.21 |
중급4강_C언어 포인터 배열과 2차원 배열 완전정복 – 메모리 구조 깊이 파헤치기! (0) | 2025.04.21 |
중급3강_C언어 동적 메모리 할당 완벽 가이드 – malloc부터 free까지 한 번에! (0) | 2025.04.20 |