อย่างที่เราทราบดีว่าอาร์เรย์มีความเป็นเนื้อเดียวกันตามคำจำกัดความ ดังนั้นเราต้องใส่ข้อมูลประเภทเดียวกันในอาร์เรย์ แต่ถ้าเราต้องการเก็บข้อมูลประเภทต่าง ๆ จะมีเคล็ดลับอย่างไร? ในภาษาซี เช่นเดียวกับภาษาโบราณ เราสามารถใช้สหภาพแรงงานเพื่อรวมประเภทต่าง ๆ เข้าเป็นประเภทเดียว จากนั้นเราสามารถกำหนดอาร์เรย์ในประเภทใหม่นี้ได้ ประเภทของวัตถุที่องค์ประกอบอาร์เรย์มีอยู่จริงจะถูกกำหนดโดยแท็ก ให้เราดูโครงสร้างแบบนี้ -
struct Vehicle{ int id; union { Bus b; Bike c; Car d; } };
จากนั้นโปรแกรมเมอร์จะต้องสร้างข้อตกลงเกี่ยวกับวิธีการใช้แท็ก ID ตัวอย่างเช่น สมมติว่าเมื่อรหัสเป็น 0 หมายความว่ายานพาหนะที่แสดงเป็นรถโดยสาร เป็นต้น สหภาพจะจัดสรรหน่วยความจำสำหรับประเภทที่ใหญ่ที่สุดระหว่างรถประจำทาง จักรยาน และรถยนต์ สิ่งนี้จะเปลืองหน่วยความจำหากมีความแตกต่างอย่างมากระหว่างขนาดของวัตถุ
ในภาษาเชิงวัตถุ เราสามารถใช้แนวคิดเรื่องการสืบทอดได้ สมมติว่าเรามีคลาสที่เรียกว่า Vehicle และประเภทอื่นๆ เช่น Bus, Bike และ Car เป็นคลาสย่อยของคลาสนั้น ดังนั้น หากเรากำหนดอาร์เรย์สำหรับยานพาหนะ อาร์เรย์นั้นก็สามารถเก็บคลาสย่อยทั้งหมดได้ ซึ่งจะช่วยให้เราจัดเก็บข้อมูลหลายประเภทไว้ในอาร์เรย์เดียว