without haste but without rest

[C] 공용체 본문

ProgrammingLanguage/C

[C] 공용체

JinungKim 2020. 2. 29. 17:55
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