C++/Other Data Types

C++ Other Data Types

Soul-Learner 2016. 12. 23. 10:15

C++ 프로그래밍, 기타 자료형 ( Other Data Types )


typedef : 기존 자료형을 더 간결하고 가독성 있는 형태의 별칭으로 정의하여 사용할 때 사용한다

typedef 을 이용하면 C++에 이미 존재하는 자료형을 좀더 간결한 형태로 표현할 수 있다. typedef 을 이용하여 전혀 새로운 자료형을 정의하는 것은 아니다.

typedef 사용 형식

typedef unsigned char ch ;    // unsigned char 자료형을 아래의 코드에서는 ch라는 별칭으로도 사용할 수 있다는 선언


union : 공용체

구조체와 유사한 형태로 정의할 수 있는데, 공용체의 메모리 크기멤버 변수 중에 메모리를 가장 많이 할당 받은 변수의 크기와 같다. 즉, 공용체의 멤버변수가 많더라도 그 중 가장 큰 변수의 크기만큼 메모리가 공용에 할당되고, 공용체의 멤버변수 중에서 한개만 값을 가질 수 있다.

여러개의 변수를 선언한 후에 상황에 따라서 그 중 한개만 사용하는 경우에는 사용되지 않는 변수들은 쓸데없이 메모리를 차지하게 되므로 이러한 상황에서는 공용체를 활용하는 것이 좋을 것이다.

union 사용 형식

union my_union {
   int i;
   char c;
   double d;
} ;                      //  }와 ; 사이에 공용체 변수를 다수개 쉼표로 분리하여 선언할 수도 있다
my_union myunion;   // 공용체 변수 선언
myunion.i = 10;

위의 코드에서 선언된 공용체 변수 myunion의 메모리는 멤버변수 중에서 가장 큰 double 형만큼의 크기를 갖게 된다. 즉, MinGW의 경우 8바이트이다


enum : 열거형(Enumerations) 자료형을 선언할 때 사용

enum은 다수개의 값들을 나열하고 그 중에서 한개의 값만을 가질 수 있는 변수의 자료형을 선언하기 위해 사용된다. 예를 들어, 한 주의 요일을 저장해야 하는 변수가 필요하고 그 변수에는 요일을 의미하는 MON ~ SUN 까지의 7개 값만 저장할 수 있도록 제한하려는 경우가 있다. 이런 경우에 enum 을 사용하여 요일에 해당하는 7개의 값을 나열해 주면 된다

enum 사용 예

enum wday_t {mon,tue,wed,thu,fri,sat,sun};
wday_t today = fri;
wcout << today << endl;    // 4

열거형 안에 나열된 값은 상수이며 앞에서 부터 0이 저장되고 그 뒤로 1씩 증가하는 정수가 할당된다. 변수가 생성된 후에는 그 값을 변경할 수 없으므로 열거형 안에는 정수 상수가 선언되어 있는 셈이다. 자동으로 0부터 시작하여 증가하는 형식인데, 선언할 때 임의의 값으로 지정할 수도 있다. 만약 mon=1 으로 지정하면 tue는 2가 되는 식으로 정수가 할당된다