본문 바로가기
전공공부/C, C++

[C] 11. C언어 공용체 및 열거형

by 아임그류튜 2024. 2. 26.
반응형

 

공용체(union)

구조체와 매우 비슷하지만 메모리 구성에서 차이가 발생합니다.

공용체는 가장 큰 멤버변수의 크기만큼 메모리를 할당한 후 그것을 공유하게 됩니다. 

구조체와 동일하게 이름(변수명)을 작성하고 중괄호안에 멤버변수를 선언합니다.

 

구조체와 다르게 메모리를 공유하는만큼 한 번에 하나의 멤버변수에만 접근이 가능합니다.

공용체는 메모리를 절약하여 효율적으로 관리할 수 있지만 사용 시 상당한 주의가 필요합니다!

 

열거형(enum)

열거형은 관련된 상수들을 그룹화 하여 코드를 좀 더 읽기 쉽게 만들어줍니다.

코드를 읽기 쉽게 만든다는 것은 수정도 쉽게 만들 수 있습니다.

// Q. 내가 쓴 코드인데 왜 읽기 쉬워야하죠?

// A1. 대학교에서만 프로그램 수업을 들어도 팀프로젝트를 꼭 하게됩니다^^

// A2. 내가 써놓고도 기억이 안납니다^^ 가독성은 꼭 필요합니다...


위 사진에는 열거형을 한 줄로 썼는데 구조체, 공용체와 같은 형태입니다!!

위 예시와 같게 day라는 열거형은 MON을 0으로 초기화시키며, SUN은 6으로 초기화됩니다.

 


위의 예시에서는 Day라는 이름의 열거형을 정의했습니다. 이 열거형은 일주일의 요일을 나타내는 상수들을 포함하고 있습니다. 각 상수는 열거형 내에서 고유한 정수값을 가지며, 기본적으로 첫 번째 상수는 0으로 초기화되며, 뒤이어 오는 상수들은 1씩 증가한 값으로 초기화됩니다.

 

열거형의 예시를 들면

enum day today = MON;

if (today == FRI) {
    printf("오늘은 금요일이다!! 불금을 즐겨!!\n");
} else {
    printf("아직도 금요일이 아니야.... 일하자 일...ㅠㅠ\n");
}

 

위 예시와 같이 사용할 수 있고 열거형을 사용하지 않았다면 int today = 0; 이런식으로 코드를 작성하여

가독성이 떨어지고 추후 오류를 잡는데 어려움이 있을 것입니다.

 

반응형