typedef
typedef int INT;
위와 같이 작성하면 INT라는 이름의 타입을 새로 생성한다.
자바에서 클래스의 이름을 타입처럼 사용하듯, 여기서도 비슷한 맥락으로 생각하면 된다.
지난번에 배운 구조체를 정의할 때는 struct struct_name variable_name 이렇게 길게 선언해야 했는데,
typedef로 미리 구조체를 어떻게 사용할 지 명시해 두면 좀 더 간결하게 사용할 수 있다.
위와 같이 활용한다. 원래 이름은 아예 생략해서 사용할 수도 있다.
Union
C말고 다른 언어에서는 거의 사용하지 않는 타입이다.
위의 그림을 살펴보자.
Union 타입으로 정의하면, 멤버변수들이 같은 위치에서 시작하게 된다.
즉, mem1에 10을 넣고 mem2에 20을 넣으면 mem1에 10을 넣었던게 사라진다. (덮어쓰인다)
mem3도 마찬가지.
어떨 떄는 double형 변수 하나, 어떨 때는 int형 변수 하나.. 이런 식으로 한 순간에 하나밖에 나타나지 않을 때 union타입을 사용한다. (사실 잘 안 쓰지만.. 옛날에 작성된 코드나 임베디드 분야에서 메모리를 효과적으로 사용할 때 사용되는 편이다.)
Union타입이 활용되는 예시이다.
4바이트 정수를 입력받고 입력받은 정수를 어떻게 해석할 지를 결정할 때 사용한다.
공용체(union)타입의 특성을 이용해 해결할 수 있다.
enum
열거형 타입.
정수인 상수들을 모아서 정의할 때 사용된다.
enum은 C뿐만 아니라 자바 등 여러 언어에서 지원하고 있다.