CS/자료구조

[C언어] typedef/enum

하루설렘 2021. 12. 8. 20:31

typedef 함수 (형 재정의)

특정 element에 대해 미리 type (int, long, double, pointer 등) 지정해서 사용하는 함수이다. 

문법은 다음과 같다. 

typedef type element
  •  장점 : 이식성과 수정 효율성이 좋다. 예를 들어, 프로그래밍 컨셉이 바껴 특정 element의 type을 int형 -> double형으로 변경할때
// typedef 사용 예시
typedef int key_t;

// 포인터형도 typedef를 사용해서 *없이 선언할 수 있다. 
typedef int* intPtr;
intPtr p, q;

열거형(enum) 

  • 변수가 갖는 값에 의미를 부여해 프로그램 가독성을 높임
  • 컴파일러는 열거형 멤버들을 정수형 상수로 인식 (문자도 indexing으로 사용 가능)

enum의 문법은 다음과 같다. 

//문법
enum 열거형 이름{상수 이름};

//ex
enum week{SUN, MON, TUE, WED, THU, FRI, SAT};
//0~6이라는 숫자로도 인식한다.
#include <stdio.h>

enum season
{
    SPRING, SUMMER = 2, FALL, WINTER
};

int main(void)
{//enum이라는 키워드를 적어야하는데 Typedef를 사용하면 안적어도됨.
    enum season birthday = FALL; 
    printf("birthday : %d \n", birthday);

    return 0;
}

 

Switch 조건문과 같이 쓰면 좋다.

#include <stdio.h>

enum Action {
    Attack = 1,
    Move,
    Jump,
    Hide
};

int main()
{
    enum Action skill; // 열거형 변수 선언
    skill = Attack; // 열거형 값 할당

    switch (skill)
    {
    case Attack: // 열거형 값이 Attack일 때
        printf("Attack\n");
        break;
    case Move: // 열거형 값이 Move일 때
        printf("Move\n");
        break;
    case Jump: // 열거형 값이 Jump일 때
        printf("Jump\n");
        break;
    case Hide: // 열거형 값이 Hide일 때
        printf("Hide\n");
        break;
    default:
        break;
    }

    return 0;
}