본문 바로가기
C언어/구조체

[C언어] 구조체 아주 쉽게 이해하기!

by bigpicture 2022. 7. 8.
반응형

우리가 어떤 학급의 선생님이라고 가정합시다. 학생은 5명입니다. 이름은 아래와 같습니다. 

김세모
이네모
박동글
임별
최타원

5명 학생의 정보를 관리해야 하는데요. 관리해야 하는 정보는 아래와 같습니다. 

1) 이름
2) 성별
3) 키
4) 몸무게

C언어를 이용해서 위 데이터를 입력하고 싶은 상황입니다. 가장 단순한 방법은 각각의 변수를 모두 정의하는 것입니다. 예를들면 아래와 같습니다 .

김세모_이름
김세모_성별
김세모_키
...


이와 같이 변수를 정의하면 총 5x4 개를 정의해야합니다. 더 좋은 방법이 없을까요? C언어에는 배열이라는게 있었다는 생각이 납니다. 배열을 사용해봅시다. 배열은 같은 형태의 자료형만 원소로 가질 수 있습니다. 아래와 같이 시도해볼 수 있습니다. 

char *박동글[4]={'박동글','남자','182','74'}


포인터배열을 사용하여 원소로 문자열을 갖도록 한 것입니다. 이 경우는 키와 몸무게도 문자열로 입력해야합니다. 

 

구조체의 등장

위와 같은 경우 사용하기에 좋은 자료구조가 구조체입니다. 구조체를 이용하면 아래와 같이 정의할 수 있습니다. 

struct student
{
  char name[20];
  char sex[20];
  double height;
  double weight;
};


student 라는 이름의 구조체입니다. 중괄호 안에는 포함될 항목들을 정의하면 됩니다. 일종의 서식이라고 생각하시면 됩니다. 위와 같은 구조체를 한번 정의해놓고 가져다가 사용하면 됩니다.  

이제 학생 정보를 생성해봅시다. 정의된 구조체를 가져다가 사용하면 됩니다. 아래와 같이 선언합니다. 

struct student Kim={"김세모","남자",182.5,72};


이제 Kim 이라는 구조체가 생성되었습니다. Kim이라는 구조체는 아래와 같은 정보를 담고 있습니다. 

 

 

아래는 전체 코드와 실행 결과입니다. 구조체의 맴버를 출력해보았습니다. 구조체의 맴버 접근은 아래 형식으로 합니다. 

 

구조체이름.맴버이름

 

#include <stdio.h>

int main ()
{

struct student
{
  char name[20];
  char sex[20];
  double height;
  double weight;
};

struct student Kim={"김세모","남자",182.5,72}; //Kim 이라는 이름의 student 구조체를 만들겠다



printf("%s \n",Kim.name);
printf("%s \n",Kim.sex);
printf("%f \n",Kim.height);
printf("%f \n",Kim.weight);

}

 

반응형

댓글