Page 157 고등학교 프로그래밍 교과서
P. 157
1 구조체에 대해 알아보자
배열은 여러 개의 값들을 모아서 저장하고 사용할 때 유용하다. 이때 배열의 값들은 구조체
어떤 객체가 가진 속성들을 모아
반드시 같은 자료형이어야 한다. 그러나 프로그램 작성 시 종류가 다른 여러 자료형 놓은 것
을 하나로 묶어 처리할 때가 있다. 이들 자료형을 하나로 묶어서 한꺼번에 처리할 수
있다면 아주 편리할 것이다. 이러한 경우에 사용하는 것이 구조체(Structure)이다.
1 구조체 선언
다음 프로그램은 매개 변수로 성명과 3과목의 성적을 전달하면, 그것을 출력하는
사용자 정의 함수를 이용하여 작성한 것이다.
프로그램 실행 결과
01 #include
02 void grade(char *name, int korean, int english, int math) 100점, 영어 95점, 수
03 { 학 85점
04 printf("성명: %s, 국어 %d점, 영어 %d점, 수학%d점\n", name, 성명: 서대영, 국어 87
korean, english, math); 점, 영어 77점, 수학
05 } 84점
06 int main( )
07 {
08 grade("강모연", 100, 95, 85);
09 grade("서대영", 87, 77, 84);
10 return 0;
11 }
Q & A
위 함수 자체만 보면 큰 문제가 없어 보인다. 그러나 위와 같은 형태로 함수를 작 나만의 자료형을 만드는 것이 가
능할까? 예를 들어, 정수형 변수 a
성하면, 10과목의 성적 처리 시 코드가 복잡해진다. 를 선언할 때 int a; 라고 하지 않고
이 경우 여러 데이터를 하나의 데이터처럼 묶어서 처리할 필요가 있으며, 이때 사 jungsu a: 라고 하는 것이 가능할
까? 가능하다면 어떤 장점이 있을까?
용하는 것이 구조체인 struct이다. struct는 구조화된 데이터형을 나타낸다. struct를 typedef라는 명령어를 사용하면
가능하다. typedef int stNum;을 프
사용하면 한 구조체로 선언된 모든 데이터를 가져와 하나의 새로운 데이터형처럼 사 로그램 상단에 입력하면 stNum이라
는 정수형 예약어가 정의된다. 따라
용할 수 있다. 구조체를 정의할 때에는 다음과 같이 선언한다. 서 stNum a = 10; 이라는 명령이 가
능하다. 물론 변수 a는 stNum형이
선언 형식 자 정수형이다. 대형 프로그램을 개
struct 구조체명 { 발할 때에는 이렇게 형을 새로 만들
어 사용하는 경우가 많다. 형 이름에
자료형 멤버 변수명1; 의미를 두어 프로그램을 읽기 쉽게
자료형 멤버 변수명2; 하기 위해서이다.
...
};
8. 구조체와 공용체 155
(책)2015프로그래밍-교과서3차심의본 본문.indb 155 2017-09-05 오후 4:16:35