------------------------------------------------------------정리-------------------------------------------------------
구조체를 사용하면, 개별적으로 흩어진 여러 변수들의 집합으로 정보를 저장하지 않고, 관련된 모든 정보를 한 장소에 저장할 수 있다.
구조체를 설계할 때, 구조체와 함께 사용할 함수들의 패키지를 함께 개발하는 것이 일반적으로 유용하다. 예를 들어 구조체의 내용을 출력하고 싶을 때마다 printf를 사용하는 것이 아닌 구조체를 전달인자로 사용하는 하나의 디스플레이 함수를 작성하는 것이 좋다.
공용체 선언은 구조체와 비슷하다. 그러나 공용체 멤버들은 같은 메모리 공간을 공유한다. 그러나 공용체에는 한번에 한 멤버만 들어갈 수 있다. 공용체를 사용하면, 데이터형은 다양하지만 한번에 하나의 값만 넣을 수 있는 변수를 생성할 수 있다.
enum은 정수 기호 상수들을 정의하는 수단을 제공한다. typedef는 기본 데이터형이나 유도 데이터형에 새로운 식별자를 부여한다.
함수를 가리키는 포인터는, 어떤 함수에게 그것이 어떤 함수를 사용해야 하는지 알리는 수단을 제공한다.
-----------------------------------------------------------요약-----------------------------------------------------------------
C구조체는, 일반적으로 데이터형이 서로 다른 여러개의 데이터 항목들을 하나의 데이터 객체(object)에 저장하는 수단을 제공한다. 태그(tag)를 사용하여, 특정 구조체 템플릿을 식별하고 그 구조체형의 변수들을 선언할 수 있다. 도트연산자(.)를 사용하여 구조체 템플릿에 있는 레이블을 사용하여 구조체의 개별 멤버들에 접근 할 수 있다.
구조체를 가리키는 포인터를 선언하면, 이름과 도트연산자를 사용하는 대신에 포인터와 간접 멤버 연산자(->)를 사용하여 구조체의 개별 멤버에 접근할 수 있다. 구조체의 주소를 얻으려면 &연산자를 사용해야 한다. 배열과 달리, 구조체의 이름은 구조체의 주소 역할을 하지 않는다.
구조체 자체를 함수의 전달인자와 리턴값으로 사용할 수 있고, 같은 유형의 다른 구조체에 대입할 수 있다.
공용체는 구조체와 동일한 신택스를 사용한다. 그러나 공용체에서 멤버들은 동일한 기억공간을 공유한다. 공용체는 선택 리스트에 들어있는 한가지 데이터형만 저장한다.
enum을 통해 한무리의 정수 기호 상수들을 설정하고, 관련 열거형을 정의할 수 있다.
typedef기능을 사용하면, C의 표준 데이터형들에 다른 이름이나 약식 표기를 부여할 수 있다.
함수의 이름은 함수의 주소역할을 한다. 이러한 함수 주소는 다른 함수에 전달인자로 사용할 수 있다.