#include <stdio.h>
// 1. 구조체 (struct)
struct MyStruct {
char c; // 1바이트
int i; // 4바이트
double d; // 8바이트
};
// 2. 공용체 (union)
union MyUnion {
char c; // 1바이트
int i; // 4바이트
double d; // 8바이트
};
int main() {
struct MyStruct s;
union MyUnion u;
// --- 차이점 1: 메모리 크기 ---
printf("=== 1. 메모리 크기 비교 ===\n");
// 구조체는 모든 멤버 크기의 합 (+ 패딩 여백) -> 약 16바이트 또는 24바이트
printf("struct의 크기: %lu 바이트\n", sizeof(s));
// 공용체는 가장 큰 멤버(double)의 크기만 가짐 -> 딱 8바이트
printf("union의 크기: %lu 바이트\n", sizeof(u));
// --- 차이점 2: 값 덮어쓰기 (공유 현상) ---
printf("\n=== 2. 공용체(union) 덮어쓰기 현상 ===\n");
u.i = 100; // 정수 방에 100을 넣음
printf("u.i 에 100을 넣은 후 u.i의 값: %d\n", u.i);
u.d = 3.14; // 실수 방에 3.14를 넣음 (이 순간 같은 공간을 쓰는 u.i의 데이터가 파괴됨!)
printf("u.d 에 3.14를 넣은 후 u.d의 값: %f\n", u.d);
printf("u.d 에 3.14를 넣은 후 u.i의 값: %d (값이 망가짐!)\n", u.i);
return 0;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: