ในภาษา C มีคอนเทนเนอร์สำหรับข้อมูลชนิดเดียวกันและหลายชนิด สำหรับข้อมูลชนิดเดียวกันมี Array ส่วนข้อมูลหลายชนิดมี Structure และ Union ซึ่งทั้งคู่จัดเก็บตัวแปรชนิดต่างๆ ได้
แม้ทั้งคู่จะจัดเก็บข้อมูลหลายชนิดได้ แต่จากการทำงานภายในมีความแตกต่างสำคัญดังนี้:
| ลำดับ | หัวข้อ | Structure | Union |
|---|---|---|---|
| 1 | นิยาม | Structure เป็นคอนเทนเนอร์ใน C ที่จัดเก็บตัวแปรชนิดต่างๆ และรองรับตัวแปรที่ผู้ใช้กำหนดเอง | Union เป็นคอนเทนเนอร์คล้ายกันใน C ที่จัดเก็บตัวแปรชนิดต่างๆ และตัวแปรที่ผู้ใช้กำหนดเองได้เช่นกัน |
| 2 | การทำงานภายใน | จัดสรรหน่วยความจำแยกต่างหากให้แต่ละสมาชิก | จัดสรรหน่วยความจำเพียงสมาชิกที่มีขนาดใหญ่ที่สุด และตำแหน่งหน่วยความจำเดียวกันนี้ถูกใช้ร่วมกันโดยทุกสมาชิก |
| 3 | ไวยากรณ์ (Syntax) | struct struct_name {
type element1;
type element2;
...
} variable1, variable2, ...; |
union u_name {
type element1;
type element2;
...
} variable1, variable2, ...; |
| 4 | ขนาด (Size) | ขนาดของ Structure เท่ากับหรือมากกว่าผลรวมขนาดของสมาชิกทั้งหมด | ขนาดของ Union เท่ากับขนาดของสมาชิกที่ใหญ่ที่สุดเพียงตัวเดียว |
| 5 | การจัดเก็บค่า | มีตำแหน่งหน่วยความจำเฉพาะสำหรับแต่ละสมาชิก จึงจัดเก็บค่าของสมาชิกหลายตัวพร้อมกันได้ | มีหน่วยความจำร่วมเพียงแห่งเดียว จึงจัดเก็บค่าได้เพียงค่าเดียวในเวลาเดียวกันสำหรับทุกสมาชิก |
| 6 | การเริ่มต้นค่า (Initialization) | สามารถกำหนดค่าเริ่มต้นให้หลายสมาชิกพร้อมกันได้ | สามารถกำหนดค่าเริ่มต้นให้สมาชิกแรกได้เพียงตัวเดียว |