C언어 열거형의 정의와 선언 및 초기화


C언어 열거형은 변수가 가질 변수값을 미리 나열해 놓은 구조입니다. enum 키워드로 정의와 선언을 합니다.

C언어 열거형

열거형은 어떤 변수가 가질 수 있는 변수값의 경우의 수를 미리 나열해놓은 구조를 말합니다.


예를 들어 Fruits { Apple, Banana, Tomato, Orange };로 열거를 하면, 변수로 Fruits를 사용할 경우 4가지 종류의 변수값만 대입할 수 있습니다.

C언어 열거형 정의와 선언

열거형의 정의 구조와 선언 구조는 구조체, 공용체와 비슷하므로 자세한 설명은 생략합니다. 차이점은 멤버에 세미 콜론;이 없고 쉼표,로 연결됩니다.

#include <stdio.h>

//열거형 정의
enum Foods
{
	Apple,	Banana,	Tomato,	Orange
};

//main()
int main()
{
	enum Foods Fruits;  //열거형명(Foods), 열거형 변수명(Fruits) 선언

  return 0;
}

사실 열거형의 멤버들은 정수값입니다. 단지 숫자를 문자로 표현한 것입니다. 맨 앞 쪽부터 0부터 1씩 증가를 하고 사용자가 숫자를 변경할 수 있습니다.


#include <stdio.h>

//열거형 정의
enum Foods
{
	Apple = 0, Banana = 1, Tomato = 2, Orange = 3
};

//main()
int main()
{
	enum Foods Fruits;  //열거형명(Foods), 열거형 변수명(Fruits) 선언

  return 0;
}

열거형 초기화

열거형은 변수값에 미리 지정한 변수값만 넣을 수 있습니다.

#include <stdio.h>

//열거형 정의
enum Foods
{
	Apple = 0, Banana = 1, Tomato = 2, Orange = 3
};

//main()
int main()
{
	enum Foods Fruits;         //열거형명(Foods), 열거형 변수명(Fruits) 선언

	Fruits = Tomato;           //열거형 변수명(Fruits)에 사전 정의된 변수값(Tomato) 대입

	if ( Fruits == Apple )
	{
		printf("선택한 과일은 Apple 입니다.");
	}
	else if ( Fruits == Banana )
	{
		printf("선택한 과일은 Banana 입니다.");
	}
	else if (Fruits == Tomato)
	{
		printf("선택한 과일은 Tomato 입니다.");
	}
	else if (Fruits == Orange)
	{
		printf("선택한 과일은 Orange 입니다.");
	}
	else
	{
		printf("리스트 없는 과일입니다.");
	}

	return 0;
}

결과

선택한 과일은 Tomato 입니다.

변수 호출시 주소값이나 열거형 이름을 호출할 필요없이 멤버명을 변수로 그대로 사용하면 됩니다.