공용체는 선언 방식이 구조체와 비슷하지만 구조체와 달리 공용체는 모든 멤버가 하나의 저장 공간을 함께 사용. 공용체 변수의 크기는 멤버 중 가장 큰 멤버로 결정된다.
공용체는 하나의 스토리지 용량을 공유하기 때문에 초기화는 첫 번째 멤버만 초기화된다. 만약 최초가 아닌 멤버를 초기화할 때는 멤버 접근 연산자.로 멤버 지정 후 초기화한다.
유니온학생s1={123},s2={.grade=3.4f};
공용체는 메모리를 공유하기 위해
크기가 같으면 하나만 초기화시켜도 같은 값이 나온다.그러나 공용체는 동일한 저장공간을 사용하기 때문에 공용체 멤버는 다른 멤버의 값에 따라 언제든지 달라질 수 있다.
열거형 열거형은 변수에 저장할 수 있는 정수값을 기호로 정의하여 나열한다.열거형 선언 방식은 구조체와 비슷하다.
enumseason{spring, summer, fall, winter}; 예약어 / 열거형명 / 기호화된 정수값
enumseason{spring, summer, fall, winter}; 예약어 / 열거형명 / 기호화된 정수값
컴파일러는 멤버를 0에서 순서대로 정수로 바꾼다.지금의 경우 spring은 0, summer는 1, fall은 2. winter는 3이다.그런데 만약에
enumseason{spring=10,summer,fall,winter};
이렇게 spring에 10을 설정하면 멤버 변수는 각각 10, 11, 12, 13으로 바뀐다. typedef를 사용한 형재정 구조체, 공용체, 열거형은 항상 struct, union, enum 등의 예약어와 함께 써야 한다.이때 typedef를 사용하면 자료형 이름에서 예약어를 생략하여 사용할 수 있다.typedef의 사용법
typedef / 구조체명 / 새로운 자료형명; typedef로 자료형을 재정의한 후에는 새로운 자료형명으로 사용할 수 있다.
typedef / 구조체명 / 새로운 자료형명; typedef로 자료형을 재정의한 후에는 새로운 자료형명으로 사용할 수 있다.
structurestudent{ntnum;};efstructurestudentStudent;intmain(student){studentS1={20};return0;}
만약 자료형을 굳이 사용할 필요가 없다면typedefstruct{intnum}Student;이렇게 정의할 수도 있다.++ typedef는 기본 자료형도 재정의하여 사용할 수 있다.Uint로 정의되지 않은 유형,본 포스팅은 ‘혼자 공부하는 C언어’를 바탕으로 작성되었습니다.