00:16 구조체
01:55 [실습] 회원 구조체 정의
05:36 [실습] 구조체를 입력 인자로 전달할 때 주의할 점
08:04 [실습] 구조체 포인터를 입력 인자로 전달
08:54 [실습] 구조체 비트 필드
11:11 공용체
11:35 [실습] 구조체와 공용체 메모리 크기 비교
12:44 [실습] 공용체 사용
14:20 열거형
14:50 [실습] 성별을 열거형으로 정의
15:47 [실습] 열거형 표현한 값 확인
공용체는 여러 개의 멤버 중에서 하나의 멤버의 값만을 사용하는 사용자 정의 형식이예요.
공용체를 정의하는 것은 구조체와 비슷해요.
공용체를 정의할 때는 struct 키워드 대신 union을 사용하세요.
공용체는 구조체와 다르게 모든 멤버마다 별도의 메모리를 부여하지 않고 메모리가 제일 큰 멤버 크기의 메모리만 할당해요.
unio [태그명]
{
[멤버 형식] [멤버 이름];
… 중략 …
};
◈ 공용체와 구조체의 메모리 크기 비교
#include <stdio.h>
struct _SDemo
{
int a; int b;
};
union _UDemo
{
int a; int b;
};
int main()
{
printf(“struct _SDemo 크기: %d\n”, sizeof(struct _SDemo));
printf(“union _UDemo 크기: %d\n”, sizeof(union _UDemo));
return 0;
}
◈ 실행 결과
struct _SDemo 크기: 8
union _UDemo 크기: 4
공용체는 멤버마다 별도의 메모리를 부여하지 않아서 하나의 멤버의 값을 변경하면 다른 멤버의 값은 의미가 없어요.
따라서 공용체는 한 순간에 하나의 멤버의 값만 유효하죠.
◈ 공용체의 하나의 멤버를 변경하면 다른 멤버의 값에 영향
#include <stdio.h>
typedef union _Demo Demo;
union _Demo
{
int i;
float f;
};
int main()
{
Demo d;
d.i = 90;
printf(“d.i: %10d d.f:%0.2f\n”, d.i, d.f);
d.f = 1.0;
printf(“d.i: %10d d.f:%0.2f\n”, d.i, d.f);
d.i = 2;
printf(“d.i: %10d d.f:%0.2f\n”, d.i, d.f);
return 0;
}
◈ 실행 결과
d.i: 90 d.f:0.00
d.i: 10653532 d.f:2.00
d.i: 2 d.f:0.00