내용 출처 : YES C (정보공학연구소 /생능출판사)
혼자 연구하는 C/C++ (SoEn.kr /와우북스)
Ⅰ. 공용체 (union)
① 여러 자료형의 원소들이 공통으로 사용할 수 있는 기억장소를 정의하고, 한번에 하나의 멤버의 값만 저장하는 자료형.
② 구조체와 유사하여 구조체에서 사용하는 연산자를 그대로 사용한다.
③ 구조체를 선언하는 기본적인 방식은 다음과 같다. 구조체에서의 4가지 바리에이션을 다 적용할 수 있다.
union <공용체 이름> { <공용체 내용> }; |
예시 ) |
④ 공용체의 이름 또한 구조체 이름처럼 하나의 타입으로 취급된다.
⑤ 공용체 또한 변수를 선언하면서 초기화 할 수 있지만 첫 요소만 가능하다.
⑥ 공용체는 주로 논리적으로 유사한 값에 대해서 사용한다.
Ⅱ. 이름 없는 공용체
① 공용체에 공용체 이름도 지정하지 않고 변수도 선언하지 않은 경우 이름없는 공용체가 된다.
② 이는 그저 둘 이상의 변수가 같은 기억장소를 공유하도록 묶어주는 역할을 한다.
③ 이름 없는 공용체 안의 변수들은 다른 지역변수들처럼 사용되며 그러므로 지역변수와 이름이 중복되어서는 안된다.
④ 이름 없는 공용체는 주로 구조체 안에서 공용체를 사용해야할 때 사용된다.
⑤ 이름 없는 공용체를 전역 또는 네임스페이스 영역에 선언할 때는 static 속성으로 선언해야 한다.
Ⅲ. 열거형
① 열거형은 변수가 가질 수 있는 값들을 나열해놓은 타입으로 내부적으로 상수로 처리된다.
② 열거형 변수를 선언하는 방법은 다음과 같다. (이외에도 있지만 생략함)
enum <열거형 이름> { <열거형 내용> }; |
예시) |
③ 열거형 이름도 하나의 타입으로 취급된다.
④ 열거형의 값들은 따로 값을 주지 않았을 경우 첫 요소를 0으로 1씩 증가하는 값을 갖는다.
⑤ ex) enum news { north, east = 3, west, south }; 으로 선언할 시 north = 0, east = 3, west = 4, south =5 의 값을 갖는다.
⑥ 열거형의 값들이 중복될 수는 없다. ex) enum sex {Man, Man, Woman}; 은 에러.
⑦ 열거형의 값들이 갖는 상수 값은 중복될 수 있다. ex) enum sex {man, woman, girl = 1} 이러면 woman = 1, girl = 1로 두 값이 같은 값을 갖는다.
Ⅳ. 열거형 사용시의 장점
① 변수의 의미를 기억하기 좋다.
② 뜻을 이해하기에 용이하다. 즉, 가독성이 좋다.
③ 범위 밖의 값을 대입하는 실수를 막을 수 있다.
Ⅴ. 사용자정의형 (typedef)
① 기존의 데이터형에 새로운 이름을 부여하는 것을 말한다.
② 이때 자료형의 포인터에 특별한 이름을 부여할 수도 있다.
③ 문법은 typedef [기존의 데이터형] [새로운 이름];