ความแตกต่างระหว่างโครงสร้างและสหภาพ ความแตกต่างระหว่าง

Anonim

ทั้งสอง โครงสร้างและสหภาพเป็นประเภทข้อมูลที่ผู้ใช้กำหนดไว้ในภาษา C และมีแนวความคิดเดียวกัน แต่ก็ยังมีความแตกต่างกันเช่นวิธีการจัดสรรหน่วยความจำให้กับสมาชิก พวกเขาจะประกาศในทำนองเดียวกัน แต่พวกเขาทำงานแตกต่างกัน อนุญาตให้ผู้ใช้รวมข้อมูลประเภทต่างๆภายใต้ชื่อเดียว ในขณะที่ตำแหน่งหน่วยความจำแยกต่างหากใช้สำหรับสมาชิกแต่ละรายเมื่อประกาศตัวแปรโครงสร้างสมาชิกที่แตกต่างกันของตัวแปร union จะแชร์ตำแหน่งหน่วยความจำเดียวกัน ลองศึกษาความแตกต่างระหว่างโครงสร้างและสหภาพเป็นรายละเอียด

โครงสร้างคืออะไร?

โครงสร้างข้อมูลเป็นเพียงชนิดข้อมูลที่ผู้ใช้กำหนดเองใน C ซึ่งช่วยให้ผู้ใช้สามารถรวมข้อมูลประเภทต่างๆเป็นชนิดเดียวในกลุ่มหน่วยความจำ โครงสร้างสามารถประกอบด้วยประเภทข้อมูลที่เรียบง่ายและซับซ้อนซึ่งเกี่ยวข้องกับแต่ละอื่น ๆ ซึ่งมิฉะนั้นจะไม่สมเหตุสมผล สมาชิกแต่ละคนภายในโครงสร้างจะได้รับตำแหน่งหน่วยความจำของตนเองเพื่อให้สามารถเข้าถึงและดึงข้อมูลได้ตลอดเวลา

โครงสร้างจะใช้เมื่อข้อมูลจำนวนมากจำเป็นต้องมีการจัดกลุ่มเช่นไดเร็กทอรีที่เก็บข้อมูลเกี่ยวกับสมาชิกจำนวนมากในหนังสือหรือสมุดที่อยู่ที่เก็บข้อมูลทั้งหมดเกี่ยวกับชื่อผู้ติดต่อที่อยู่เดียว, หมายเลขติดต่อและอื่น ๆ ที่อยู่ของสมาชิกแต่ละคนจะเรียงตามลำดับซึ่งหมายความว่าหน่วยความจำของสมาชิกแต่ละคนจะเริ่มต้นที่ค่าชดเชยที่แตกต่างกัน การเปลี่ยนแปลงค่าของสมาชิกคนหนึ่งจะไม่มีผลต่อสมาชิกคนอื่น ๆ

คำหลัก 'struct' ใช้เพื่อกำหนดโครงสร้างของข้อมูลประเภทต่างๆภายใต้ชื่อเดียว ตัวอย่างเช่นหากคุณต้องการสร้างฐานข้อมูลพนักงานคุณจะต้องเก็บชื่อพนักงานอายุโทรศัพท์และรายละเอียดเงินเดือนไว้ในเอนทิตีรายเดียว นี้จะกระทำโดยคำหลัก 'struct' ซึ่งจะบอกผู้เรียบเรียงว่าโครงสร้างได้รับการประกาศ

พนักงาน struct

ชื่อสตริง;

อายุสตริง;

สายโทรศัพท์;

เงินเดือนสตริง;

} emp1, emp2;

ที่นี่ 'พนักงาน' คือชื่อของโครงสร้างและสองตัวแปร 'emp1' และ 'emp2' ถูกสร้างขึ้นจาก 'พนักงาน' ประเภท วงเล็บปีกกาปิดต้องตามด้วยเครื่องหมายอัฒภาค (;)

สมาชิกของโครงสร้างสามารถเข้าถึงได้โดยผู้ประกอบการสองประเภท:

ผู้ดำเนินการสมาชิก

  1. ตัวดำเนินการตัวดำเนินการโครงสร้าง
  2. สหภาพคืออะไร?

เป็นชนิดข้อมูลพิเศษที่ใช้ใน C ซึ่งช่วยให้ผู้ใช้สามารถจัดเก็บข้อมูลประเภทต่างๆในตำแหน่งหน่วยความจำเดียวกันได้ สหภาพค่อนข้างคล้ายกับโครงสร้างและสามารถกำหนดได้โดยแทนที่คำว่า 'struct' ด้วยคำว่า 'union' สมาชิกซ้อนทับความทรงจำของกันและกันในสหภาพและมีขนาดใหญ่พอที่จะใส่ให้กับสมาชิกทุกคนได้

เมื่อตัวแปรมีความเกี่ยวข้องกับสหภาพคอมไพเลอร์จัดสรรหน่วยความจำโดยการพิจารณาขนาดของหน่วยความจำที่ใหญ่ที่สุดดังนั้นขนาดของสหภาพจะเท่ากับขนาดของสมาชิกข้อมูลที่ใหญ่ที่สุดยูเนี่ยนสามารถกำหนดได้ด้วยสมาชิกจำนวนมาก แต่สมาชิกคนหนึ่งมีค่าในช่วงเวลาใดก็ได้

ที่อยู่เดียวกันสำหรับสมาชิกทั้งหมดของสหภาพซึ่งหมายความว่าสมาชิกทุกคนเริ่มต้นที่ค่าชดเชยเดียวกัน และการเปลี่ยนแปลงมูลค่าของสมาชิกรายหนึ่งจะส่งผลกระทบต่อค่านิยมของสมาชิกคนอื่น ๆ ยูเนี่ยนสามารถใช้เมื่อคุณต้องการจัดเก็บข้อมูลบางอย่างที่เป็นหนึ่งในหลายประเภทข้อมูล

พนักงานสหภาพ {

ชื่อถ่าน [32];

อายุ int; เงินเดือนลอยตัว

};

ที่นี่คำหลัก 'สหภาพ' กำหนดสหภาพซึ่งค่อนข้างคล้ายกับการประกาศโครงสร้าง ตัวแปรสามารถจัดเก็บค่าสตริงที่เป็น 'ชื่อของพนักงาน' ซึ่งเป็นค่าจำนวนเต็มซึ่งเป็น 'อายุของพนักงาน' หรือลอยซึ่งหมายถึง 'เงินเดือนของพนักงาน'

ความแตกต่างระหว่างโครงสร้างและสหภาพ

1. คำหลัก

คำหลัก 'struct' ใช้เพื่อกำหนดโครงสร้างขณะที่คำหลัก 'union' ใช้เพื่อกำหนดสหภาพ

2 การจัดสรรหน่วยความจำ

พื้นที่หน่วยความจำที่แยกต่างหากจะได้รับการจัดสรรสำหรับสมาชิกภายในโครงสร้างและสมาชิกมีที่อยู่ที่แตกต่างกันซึ่งไม่ได้แชร์หน่วยความจำ ในทางตรงกันข้ามยูเนี่ยนมีพื้นที่หน่วยความจำเดียวกันสำหรับสมาชิกทั้งหมดเพื่อจัดสรรหน่วยความจำร่วมกัน

3 การเข้าใช้สมาชิก

สหภาพจะจัดเก็บค่าเพียงครั้งละหนึ่งครั้งสำหรับสมาชิกทุกคนที่สามารถเข้าถึงสมาชิกได้ครั้งละหนึ่งคนเท่านั้น แม้ว่าค่าต่างๆจะถูกเก็บไว้ในโครงสร้างดังนั้นค่าสมาชิกสามารถเข้าถึงและเรียกค้นได้ทุกเมื่อ

4 ขนาด

ขนาดของโครงสร้างมีขนาดเท่ากับจำนวนสมาชิกทั้งหมดหรือมากกว่าในขณะที่ขนาดของสหภาพเท่ากับขนาดของสมาชิกที่มีขนาดใหญ่ที่สุด

5 การสร้างค่าเริ่มต้น

ในโครงสร้างสมาชิกหลายคนสามารถเริ่มต้นได้พร้อมกันในขณะที่อยู่ในสหภาพจะมีเพียงสมาชิกรายแรกเท่านั้นที่สามารถเตรียมใช้งานได้ด้วยค่าของประเภท

5 ค่า

โครงสร้างสามารถจัดเก็บค่าต่างๆของสมาชิกทั้งหมดและการเปลี่ยนแปลงค่าของสมาชิกรายหนึ่งจะไม่มีผลต่อค่านิยมของสมาชิกคนอื่น ๆ ในขณะที่สหภาพเก็บค่าเดียวกันสำหรับสมาชิกทุกคนและการเปลี่ยนแปลงมูลค่าของสมาชิกรายหนึ่งจะส่งผลกระทบต่อมูลค่าของอีกฝ่ายหนึ่ง

โครงสร้างเทียบกับสหภาพ

โครงสร้าง

สหภาพ คำสำคัญ Struct ใช้เพื่อกำหนดโครงสร้าง
คำหลัก Union ใช้เพื่อกำหนดสหภาพ สมาชิกไม่แชร์หน่วยความจำในโครงสร้าง
สมาชิกแบ่งปันพื้นที่หน่วยความจำในสหภาพ สมาชิกสามารถเรียกค้นได้ทุกเมื่อในโครงสร้าง
สามารถเข้าถึงสมาชิกได้เพียงรายเดียวในเวลาเดียวกันในสหภาพ สมาชิกหลายคนสามารถสร้างโครงสร้างได้ในครั้งเดียว
สามารถเริ่มต้นเฉพาะสมาชิกรายแรกเท่านั้น ขนาดของโครงสร้างจะเท่ากับผลรวมของขนาดของแต่ละสมาชิก
ขนาดของสหภาพเท่ากับขนาดของสมาชิกที่ใหญ่ที่สุด การเปลี่ยนแปลงค่าของสมาชิกคนหนึ่งจะไม่ส่งผลต่อค่าของอีกฝ่ายหนึ่ง
การเปลี่ยนแปลงค่าของสมาชิกหนึ่งจะมีผลกับค่าสมาชิกอื่น ๆ จัดเก็บค่าต่างๆให้กับสมาชิกทุกคน
เก็บค่าเดียวกันสำหรับสมาชิกทุกคน สรุป

โครงสร้างข้อมูลและสหภาพเป็นประเภทข้อมูลที่ผู้ใช้กำหนดเองใน C ที่มีฟังก์ชันและแนวคิดเหมือนกัน แต่ก็ยังมีความแตกต่างกันไปในบางกรณี

  • ทั้งสองมีตัวแปรของชนิดข้อมูลที่แตกต่างกัน แต่ใช้ไวยากรณ์เดียวกันสำหรับการประกาศตัวแปรและการเข้าถึงสมาชิก ในขณะที่โครงสร้างถูกกำหนดโดยคำหลัก 'struct' สหภาพจะถูกกำหนดโดยคำหลัก 'union'
  • สมาชิกแต่ละคนจะได้รับตำแหน่งหน่วยความจำแยกกันในโครงสร้างขณะที่อยู่ในกลุ่มพื้นที่หน่วยความจำทั้งหมดจะเท่ากับสมาชิกที่มีขนาดใหญ่ที่สุด สมาชิกทั้งหมดมีพื้นที่หน่วยความจำเดียวกันในสหภาพ
  • สมาชิกในลำดับใด ๆ สามารถเข้าถึงได้ในโครงสร้างในขณะที่อยู่ใน union จะสามารถเข้าถึงได้เฉพาะตัวแปรที่สามารถเข้าถึงได้ซึ่งค่าที่เก็บไว้เมื่อเร็ว ๆ นี้