열거형(enumeration)은 정수형 상수를 사용하기 편하게 이름을 부여해서 나열해 놓은 자료형입니다.
보통 변수를 상수로 만들기 위해서는 const를 자료형 앞에 붙여줍니다,
const int num = 0;
하지만 선언할 양이 점점 많아지면 관리하기가 힘들어집니다.
이때 열거형을 사용합니다
열거형은 enum 키워드를 사용합니다.
열거형을 정의하는 방법은 다음과 같습니다.
enum 열거형이름 {
상수1,
상수2,
상수3,
.
.
.
};
구조체나 공용체랑 다르게 자료형 없이 정의해야 합니다.
열거형도 사용하기 위해서는 구조체나 공용체 처럼 변수로 선언해야 합니다.
enum 열거형이름 변수이름;
정의하고 바로 변수 선언도 가능합니다.
enum 열거형이름 {
상수1,
상수2,
상수3,
.
.
.
} 변수이름;
열거형은 상수들에 값을 넣지 않으면 처음 상수(위)에서 0으로 시작해서 1씩 커지면서 값이 자동으로 입력됩니다.
*열거형의 정의에서 멤버상수들은 단순하게 상수로 사용이 가능합니다.
이걸 이용해서 swith나 for문등의 조건에도 많이 사용합니다.
단 함수안에 상수와 같은 이름의 변수를 사용하면 열거형을 변수 선언하고 사용해야 합니다.
#include <stdio.h>
enum en_1 {
num1,
num2,
num3,
num4,
};
int main(void) {
printf("num1 = %d \n", num1);
printf("num2 = %d \n", num2);
printf("num3 = %d \n", num3);
printf("num4 = %d \n", num4);
return 0;
}
결과를 보면 자동으로 0부터 1씩 증가하며 입력된 모습을 볼 수 있습니다.
만약 중간중간에만 값을 지정하면 지정하지 않은 곳도 같은 방식으로 값이 정해집니다.
#include <stdio.h>
enum en_1 {
num1=2, num2, num3, num4, num5=13, num6, num7, num8,
};
int main(void) {
printf("num1 = %d \n", num1);
printf("num2 = %d \n", num2);
printf("num3 = %d \n", num3);
printf("num4 = %d \n", num4);
printf("num4 = %d \n", num5);
printf("num4 = %d \n", num6);
printf("num4 = %d \n", num7);
printf("num4 = %d \n", num8);
return 0;
}
결과를 보면 중간중간에만 값을 입력하면 값이 정해지지 않은 상수들은 값이 지정된 상수에서1씩 증가해서 자동으로 채워집니다.
열거형 변수는 열거형을 정의할때 선언한 멤버상수들만 값으로 받을 수 있습니다.
#include <stdio.h>
enum color {
RED, GREEN, BLUE, PINK, YELLOW, WHITE, BLACK
};
char *color_name[] = { "red", "green", "blue", "pink", "yellow", "white", "black" };
int main(void) {
enum color col;
col = BLUE;
printf("오늘의 색깔은 = %s \n", color_name[col]);
return 0;
}
*열거형 변수에 일반 정수도 입력 가능하고 컴파일시 에러도 발생하지 않지만 이런 식으로 사용하지 않는 걸 추천드립니다.
'공부 자료실 > C언어' 카테고리의 다른 글
C언어 - 포인터와 다중 포인터 (0) | 2020.07.03 |
---|---|
C언어 - typedef (0) | 2020.07.02 |
C언어 - 공용체 (0) | 2020.07.01 |
C언어 - 문자열 변환 (0) | 2020.06.30 |
C언어 - 문자,문자열의 입력, 출력 (0) | 2020.06.30 |
댓글