공용체(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; 이런식으로 코드를 작성하여
가독성이 떨어지고 추후 오류를 잡는데 어려움이 있을 것입니다.
'전공공부 > C, C++' 카테고리의 다른 글
[C] 12. C언어 파일 입출력(FILE Stream) (31) | 2024.02.29 |
---|---|
[C] 11. C언어 동적할당(동적메모리) (34) | 2024.02.28 |
[C] 10. C언어 구조체 (32) | 2024.02.25 |
[C] 9. C언어 다차원 배열 및 다중 포인터 (32) | 2024.02.24 |
[C] 8. C언어 배열과 포인터의 연관 (36) | 2024.02.23 |