without haste but without rest
[C] 공용체 본문
Reference - C언어 코딩도장
0. 공용체
주로 임베디드 시스템, 커널 모드 디바이스 드라이버 등에 사용한다.
1. 구조체와 공용체
구조체는 멤버들이 각각 공간을 차지한다. 반면에 공용체는 멤버 중에서 가장 큰 자료형의 공간을 공유한다. 구조체의 크기는 모든 멤버들의 크기를 합산한 값인데, 공용체는 멤버 중에서 가장 큰 자료형의 공간을 리턴한다.
2. 공용체의 크기
아래 코드에서 sizeof(box)는 가장 큰 자료형인 char c[8]의 크기를 리턴한다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
union Box {
short a;
float b;
char c[8];
};
int main() {
union Box box;
printf("%d\n", sizeof(box));
strcpy(box.c, "Hello");
printf(box.c);
}
3. 구조체의 크기
아래 코드는 위 코드의 공용체를 구조체로만 바꾼 코드다. 여기서 sizeof(box)는 Box라는 구조체에 속한 모든 멤버들의 크기를 합산한 값 16을 리턴한다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
struct Box {
short a;
float b;
char c[8];
};
int main() {
struct Box box;
printf("%d\n", sizeof(box));
strcpy(box.c, "Hello");
printf(box.c);
}
'ProgrammingLanguage > C' 카테고리의 다른 글
[C] 매크로 (0) | 2020.02.29 |
---|---|
[C] 열거형 (0) | 2020.02.29 |
[C] 구조체 (0) | 2020.02.27 |
[C] sprintf / 버퍼 (0) | 2020.02.26 |
[C] 문자열 관련 함수 (0) | 2020.02.26 |
Comments