ความแตกต่างระหว่างโครงสร้างและสหภาพ ความแตกต่างระหว่าง
ทั้งสอง โครงสร้างและสหภาพเป็นประเภทข้อมูลที่ผู้ใช้กำหนดไว้ในภาษา C และมีแนวความคิดเดียวกัน แต่ก็ยังมีความแตกต่างกันเช่นวิธีการจัดสรรหน่วยความจำให้กับสมาชิก พวกเขาจะประกาศในทำนองเดียวกัน แต่พวกเขาทำงานแตกต่างกัน อนุญาตให้ผู้ใช้รวมข้อมูลประเภทต่างๆภายใต้ชื่อเดียว ในขณะที่ตำแหน่งหน่วยความจำแยกต่างหากใช้สำหรับสมาชิกแต่ละรายเมื่อประกาศตัวแปรโครงสร้างสมาชิกที่แตกต่างกันของตัวแปร union จะแชร์ตำแหน่งหน่วยความจำเดียวกัน ลองศึกษาความแตกต่างระหว่างโครงสร้างและสหภาพเป็นรายละเอียด
โครงสร้างคืออะไร?
โครงสร้างข้อมูลเป็นเพียงชนิดข้อมูลที่ผู้ใช้กำหนดเองใน C ซึ่งช่วยให้ผู้ใช้สามารถรวมข้อมูลประเภทต่างๆเป็นชนิดเดียวในกลุ่มหน่วยความจำ โครงสร้างสามารถประกอบด้วยประเภทข้อมูลที่เรียบง่ายและซับซ้อนซึ่งเกี่ยวข้องกับแต่ละอื่น ๆ ซึ่งมิฉะนั้นจะไม่สมเหตุสมผล สมาชิกแต่ละคนภายในโครงสร้างจะได้รับตำแหน่งหน่วยความจำของตนเองเพื่อให้สามารถเข้าถึงและดึงข้อมูลได้ตลอดเวลา
โครงสร้างจะใช้เมื่อข้อมูลจำนวนมากจำเป็นต้องมีการจัดกลุ่มเช่นไดเร็กทอรีที่เก็บข้อมูลเกี่ยวกับสมาชิกจำนวนมากในหนังสือหรือสมุดที่อยู่ที่เก็บข้อมูลทั้งหมดเกี่ยวกับชื่อผู้ติดต่อที่อยู่เดียว, หมายเลขติดต่อและอื่น ๆ ที่อยู่ของสมาชิกแต่ละคนจะเรียงตามลำดับซึ่งหมายความว่าหน่วยความจำของสมาชิกแต่ละคนจะเริ่มต้นที่ค่าชดเชยที่แตกต่างกัน การเปลี่ยนแปลงค่าของสมาชิกคนหนึ่งจะไม่มีผลต่อสมาชิกคนอื่น ๆพนักงาน struct
ชื่อสตริง;
อายุสตริง;
สายโทรศัพท์;
เงินเดือนสตริง;
} emp1, emp2;
ที่นี่ 'พนักงาน' คือชื่อของโครงสร้างและสองตัวแปร 'emp1' และ 'emp2' ถูกสร้างขึ้นจาก 'พนักงาน' ประเภท วงเล็บปีกกาปิดต้องตามด้วยเครื่องหมายอัฒภาค (;)
สมาชิกของโครงสร้างสามารถเข้าถึงได้โดยผู้ประกอบการสองประเภท:
ผู้ดำเนินการสมาชิก
- ตัวดำเนินการตัวดำเนินการโครงสร้าง
- สหภาพคืออะไร?
เป็นชนิดข้อมูลพิเศษที่ใช้ใน C ซึ่งช่วยให้ผู้ใช้สามารถจัดเก็บข้อมูลประเภทต่างๆในตำแหน่งหน่วยความจำเดียวกันได้ สหภาพค่อนข้างคล้ายกับโครงสร้างและสามารถกำหนดได้โดยแทนที่คำว่า 'struct' ด้วยคำว่า 'union' สมาชิกซ้อนทับความทรงจำของกันและกันในสหภาพและมีขนาดใหญ่พอที่จะใส่ให้กับสมาชิกทุกคนได้
เมื่อตัวแปรมีความเกี่ยวข้องกับสหภาพคอมไพเลอร์จัดสรรหน่วยความจำโดยการพิจารณาขนาดของหน่วยความจำที่ใหญ่ที่สุดดังนั้นขนาดของสหภาพจะเท่ากับขนาดของสมาชิกข้อมูลที่ใหญ่ที่สุดยูเนี่ยนสามารถกำหนดได้ด้วยสมาชิกจำนวนมาก แต่สมาชิกคนหนึ่งมีค่าในช่วงเวลาใดก็ได้
ที่อยู่เดียวกันสำหรับสมาชิกทั้งหมดของสหภาพซึ่งหมายความว่าสมาชิกทุกคนเริ่มต้นที่ค่าชดเชยเดียวกัน และการเปลี่ยนแปลงมูลค่าของสมาชิกรายหนึ่งจะส่งผลกระทบต่อค่านิยมของสมาชิกคนอื่น ๆ ยูเนี่ยนสามารถใช้เมื่อคุณต้องการจัดเก็บข้อมูลบางอย่างที่เป็นหนึ่งในหลายประเภทข้อมูล
พนักงานสหภาพ {
ชื่อถ่าน [32];
อายุ int; เงินเดือนลอยตัว
};
ที่นี่คำหลัก 'สหภาพ' กำหนดสหภาพซึ่งค่อนข้างคล้ายกับการประกาศโครงสร้าง ตัวแปรสามารถจัดเก็บค่าสตริงที่เป็น 'ชื่อของพนักงาน' ซึ่งเป็นค่าจำนวนเต็มซึ่งเป็น 'อายุของพนักงาน' หรือลอยซึ่งหมายถึง 'เงินเดือนของพนักงาน'
ความแตกต่างระหว่างโครงสร้างและสหภาพ
1. คำหลัก
คำหลัก 'struct' ใช้เพื่อกำหนดโครงสร้างขณะที่คำหลัก 'union' ใช้เพื่อกำหนดสหภาพ
2 การจัดสรรหน่วยความจำ
พื้นที่หน่วยความจำที่แยกต่างหากจะได้รับการจัดสรรสำหรับสมาชิกภายในโครงสร้างและสมาชิกมีที่อยู่ที่แตกต่างกันซึ่งไม่ได้แชร์หน่วยความจำ ในทางตรงกันข้ามยูเนี่ยนมีพื้นที่หน่วยความจำเดียวกันสำหรับสมาชิกทั้งหมดเพื่อจัดสรรหน่วยความจำร่วมกัน
3 การเข้าใช้สมาชิก
สหภาพจะจัดเก็บค่าเพียงครั้งละหนึ่งครั้งสำหรับสมาชิกทุกคนที่สามารถเข้าถึงสมาชิกได้ครั้งละหนึ่งคนเท่านั้น แม้ว่าค่าต่างๆจะถูกเก็บไว้ในโครงสร้างดังนั้นค่าสมาชิกสามารถเข้าถึงและเรียกค้นได้ทุกเมื่อ
4 ขนาด
ขนาดของโครงสร้างมีขนาดเท่ากับจำนวนสมาชิกทั้งหมดหรือมากกว่าในขณะที่ขนาดของสหภาพเท่ากับขนาดของสมาชิกที่มีขนาดใหญ่ที่สุด
5 การสร้างค่าเริ่มต้น
ในโครงสร้างสมาชิกหลายคนสามารถเริ่มต้นได้พร้อมกันในขณะที่อยู่ในสหภาพจะมีเพียงสมาชิกรายแรกเท่านั้นที่สามารถเตรียมใช้งานได้ด้วยค่าของประเภท
5 ค่า
โครงสร้างสามารถจัดเก็บค่าต่างๆของสมาชิกทั้งหมดและการเปลี่ยนแปลงค่าของสมาชิกรายหนึ่งจะไม่มีผลต่อค่านิยมของสมาชิกคนอื่น ๆ ในขณะที่สหภาพเก็บค่าเดียวกันสำหรับสมาชิกทุกคนและการเปลี่ยนแปลงมูลค่าของสมาชิกรายหนึ่งจะส่งผลกระทบต่อมูลค่าของอีกฝ่ายหนึ่ง
โครงสร้างเทียบกับสหภาพ
โครงสร้าง
สหภาพ | คำสำคัญ Struct ใช้เพื่อกำหนดโครงสร้าง |
คำหลัก Union ใช้เพื่อกำหนดสหภาพ | สมาชิกไม่แชร์หน่วยความจำในโครงสร้าง |
สมาชิกแบ่งปันพื้นที่หน่วยความจำในสหภาพ | สมาชิกสามารถเรียกค้นได้ทุกเมื่อในโครงสร้าง |
สามารถเข้าถึงสมาชิกได้เพียงรายเดียวในเวลาเดียวกันในสหภาพ | สมาชิกหลายคนสามารถสร้างโครงสร้างได้ในครั้งเดียว |
สามารถเริ่มต้นเฉพาะสมาชิกรายแรกเท่านั้น | ขนาดของโครงสร้างจะเท่ากับผลรวมของขนาดของแต่ละสมาชิก |
ขนาดของสหภาพเท่ากับขนาดของสมาชิกที่ใหญ่ที่สุด | การเปลี่ยนแปลงค่าของสมาชิกคนหนึ่งจะไม่ส่งผลต่อค่าของอีกฝ่ายหนึ่ง |
การเปลี่ยนแปลงค่าของสมาชิกหนึ่งจะมีผลกับค่าสมาชิกอื่น ๆ | จัดเก็บค่าต่างๆให้กับสมาชิกทุกคน |
เก็บค่าเดียวกันสำหรับสมาชิกทุกคน | สรุป |
โครงสร้างข้อมูลและสหภาพเป็นประเภทข้อมูลที่ผู้ใช้กำหนดเองใน C ที่มีฟังก์ชันและแนวคิดเหมือนกัน แต่ก็ยังมีความแตกต่างกันไปในบางกรณี
- ทั้งสองมีตัวแปรของชนิดข้อมูลที่แตกต่างกัน แต่ใช้ไวยากรณ์เดียวกันสำหรับการประกาศตัวแปรและการเข้าถึงสมาชิก ในขณะที่โครงสร้างถูกกำหนดโดยคำหลัก 'struct' สหภาพจะถูกกำหนดโดยคำหลัก 'union'
- สมาชิกแต่ละคนจะได้รับตำแหน่งหน่วยความจำแยกกันในโครงสร้างขณะที่อยู่ในกลุ่มพื้นที่หน่วยความจำทั้งหมดจะเท่ากับสมาชิกที่มีขนาดใหญ่ที่สุด สมาชิกทั้งหมดมีพื้นที่หน่วยความจำเดียวกันในสหภาพ
- สมาชิกในลำดับใด ๆ สามารถเข้าถึงได้ในโครงสร้างในขณะที่อยู่ใน union จะสามารถเข้าถึงได้เฉพาะตัวแปรที่สามารถเข้าถึงได้ซึ่งค่าที่เก็บไว้เมื่อเร็ว ๆ นี้