Structure (โครงสร้าง)
User-defined Data Type รวมข้อมูลหลายประเภทไว้ด้วยกัน สมาชิกแต่ละตัวมีหน่วยความจำแยกกัน
รูปแบบ
struct structure_name {
member_definition;
} structure_variables;
ตัวอย่าง
#include <stdio.h>
#include <string.h>
struct Data {
int i;
long int f;
} data, data1;
int main() {
data.i = 28;
printf("The value of i : %d\n", data.i);
printf("Memory size occupied by data : %d\t%d", sizeof(data), sizeof(data1));
return 0;
}
ผลลัพธ์
The value of i : 28
Memory size occupied by data : 16 16
Union (ยูเนียน)
User-defined Data Type เช่นเดียวกัน แต่ สมาชิกทุกตัวใช้หน่วยความจำร่วมกัน ขนาด Union = ขนาดสมาชิกที่ใหญ่ที่สุด
รูปแบบ
union union_name {
member_definition;
} union_variables;
ตัวอย่าง
#include <stdio.h>
#include <string.h>
union Data {
int i;
float f;
} data, data1;
int main() {
printf("Memory size occupied by data : %d\t%d", sizeof(data), sizeof(data1));
return 0;
}
ผลลัพธ์
Memory size occupied by data : 4 4
สรุปความแตกต่าง
| คุณสมบัติ | Structure | Union |
|---|---|---|
| หน่วยความจำ | แยกกันแต่ละสมาชิก | ร่วมกัน (Shared) |
| ขนาดรวม | ผลรวมสมาชิกทุกตัว (+padding) | ขนาดสมาชิกที่ใหญ่ที่สุด |
| ค่าเก็บได้ | ทุกสมาชิกพร้อมกัน | ทีละอัน (Overwrite) |
| ใช้เมื่อ | ต้องเก็บข้อมูลหลายค่าพร้อมกัน | ประหยัดหน่วยความจำ เก็บค่าสลับกัน |