본문 바로가기
C언어/C 언어 중급

중급7강_C언어 구조체(struct) 기초 완벽 정리 – 데이터를 묶는 강력한 방법

by AI쌤 2025. 4. 21.
반응형

 

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 구조체 별칭 생성

🎯 실습 과제

  1. Book, Employee, Product 등의 구조체 정의해보기
  2. 구조체 배열을 이용해 정보 저장 및 출력
  3. 구조체 포인터를 사용하여 멤버 정보 수정

🗣 다음 주 예고: 파일 입출력 기본 – fopen, fprintf, fscanf 완벽 가이드

C언어의 또 하나의 강력한 기능!
다음 강의에서는 파일을 열고, 읽고, 쓰는 방법을 소개합니다.
실제 프로그램 제작에 한 발 더 가까워지는 시간! 기대해주세요.

반응형