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