연재 완료/C Lang 이론

C언어 이론 9. 구조체 및 공용체 (공용체, 열거형)

라이피 (Lypi) 2018. 5. 27. 01:16
반응형

내용 출처 : 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 [기존의 데이터형] [새로운 이름];


반응형