48.0 구조체 사용하기

지금까지 자료형별로 변수를 하나씩 선언해서 사용했습니다. 하지만 프로그램을 만들다 보면 변수 한두 개로는 처리하기가 힘든 상황이 발생하죠.

만약 인적 정보를 처리한다면 이름, 나이, 주소 등을 저장할 변수가 필요합니다.

char name[20];        // 이름
int age;              // 나이
char address[100];    // 주소

name, age, address 변수에는 한 사람의 정보만 저장할 수 있습니다. 여러 명의 정보를 저장하려면 name1, name2처럼 변수 이름을 바꿔서 계속 추가해야 합니다. 복잡하고 비효율적이죠.

char name1[20];
char name2[20];
...
char name100[20];

int age1;
int age2;
...
int age100;

char address1[100];
char address2[100];
...
char address100[100];

C 언어는 자료를 체계적으로 관리하기 위해 구조체라는 문법을 제공합니다.

구조체는 struct 키워드로 정의하며 data structure(자료 구조)의 약어로 struct를 사용합니다. 다음은 인적 정보를 표현한 구조체인데 struct PersonPerson 구조체를 정의한다는 뜻입니다.

struct Person {
    char name[20];        // 이름
    int age;              // 나이
    char address[100];    // 주소
};

이름, 나이, 주소 정보가 알아보기 쉽게 Person이라는 구조체 안에 들어있습니다. 이제 구조체로 이름, 나이, 주소를 따로 처리하지 않고 사람 단위로 정보를 처리할 수 있죠.

그림 48‑1 변수와 구조체

Person 구조체를 사용하여 변수를 만들어내면 인적 정보를 손쉽게 추가할 수 있고, 구조체 자체도 배열로 만들면 10명이든 100명이든 인적 정보를 체계적으로 관리할 수 있습니다.

char name1[20];
char name2[20];
...
char name100[20];

int age1;
int age2;
...
int age100;

char address1[100];
char address2[100];
...
char address100[100];
//    ↑ struct Person people[100];

구조체는 관련 정보를 하나의 의미로 묶을 때 사용합니다. 특히 목적에 맞는 자료형을 만들어서 사용하는데 기본 자료형을 조합하여 만든 자료형을 파생형(derived type)이라 합니다.