06 파생 데이터 타입
이 장에서 다루는 내용
• 오브젝트를 배열로 묶기
• 포인터를 불투명 타입으로 사용하기
• 오브젝트를 묶어서 구조체로 만들기
• typedef로 타입 이름 새로 짓기
이 장에서는 지금까지 소개한 기본 타입에서 파생된 타입을 살펴본다. 파생 데이터 타입은 네 가지가 있다. 그 중 다음 두 가지를 묶음형 데이터 타입(aggregate data type)이라 한다. 하나 또는 여러 데이터 타입의 인스턴스를 하나로 묶기 때문이다.
• 배열(array): 타입이 같은 원소를 묶는다(6.1절).
• 구조체(structure): 타입이 다른 원소를 묶는다(6.3절).
다음과 같이 좀 더 복잡한 타입도 있다.
• 포인터(pointer): 메모리에 있는 오브젝트를 가리킨다. 포인터는 C에서 가장 어려운 개념 중 하나라서 11장에서 자세히 설명한다. 6.2절에서는 불투명 데이터 타입(opaque data type) 측면만 살펴보고, 포인터의 본래 목적은 언급하지 않는다.
• 유니온(union): 다양한 기본 타입을 동일한 메모리 위치에 겹쳐서 나열한다. 유니온을 제대로 이해하려면 C의 메모리 모델을 잘 알아야 한다. 그 중에는 일상적인 프로그래밍에서 잘 쓰지 않는 것도 있다. 자세한 사항은 12.2절에서 소개한다.
이외에도 타입의 이름을 새로 짓는 typedef(6.4절)가 있다. 이는 새 타입을 만드는 앞의 네 타입과 달리, 기존 타입에 대한 이름만 새로 짓는 것이다. 마치 #define으로 매크로를 정의하는 것과 비슷하다.