ในภาษาการเขียนโปรแกรม C มีประเภทข้อมูลที่กำหนดไว้ล่วงหน้าและประเภทข้อมูลที่ผู้ใช้กำหนด ตัวอย่างของชนิดข้อมูลที่กำหนดโดยผู้ใช้ ได้แก่ โครงสร้างและสหภาพใน C
ในโครงสร้างและสหภาพ ผู้ใช้สามารถกำหนดประเภทข้อมูลและฟังก์ชันสมาชิกที่แตกต่างกันเพื่อเข้าถึงตัวแปรทั้งหมด แม้ว่าทั้งคู่จะใช้รูปแบบเดียวกัน แต่ก็มีความแตกต่างกันอย่างมากระหว่างพวกเขา
โครงสร้างเทียบกับยูเนี่ยนในC
ในโครงสร้าง ขนาดหน่วยความจำทั้งหมดเท่ากับผลรวมของขนาดของประเภทข้อมูลทั้งหมดในโครงสร้าง ในขณะที่ใน Union ขนาดพื้นที่หน่วยความจำทั้งหมดจะเท่ากับขนาดของประเภทข้อมูลที่ใหญ่ที่สุดในสหภาพ มันเป็นหนึ่งในความแตกต่างที่สำคัญที่สุดระหว่างโครงสร้างและสหภาพ
ตัวอย่างเช่น
งานโครงสร้าง
{
เงินต่างประเทศ;
ชื่อถ่าน;
}s1;
ในนี้ขนาดของหน่วยความจำสำหรับโครงสร้างที่จัดสรรจะเป็น 2+1 =3 ไบต์เนื่องจากขนาดของจำนวนเต็มคือ 1 ไบต์และขนาดของถ่านคือ 2 ไบต์ ดังนั้นขนาดจะเป็น 3 ไบต์
` สหภาพแรงงาน
{
เงินต่างประเทศ;
ชื่อถ่าน;
}s1;
ในยูเนียน ขนาดของหน่วยความจำที่จัดสรรจะเป็น 2 ไบต์ เนื่องจากขนาดสูงสุดของชนิดข้อมูลในยูเนียนคือ 2 ไบต์ เช่น ชนิดข้อมูลอักขระ
ตารางเปรียบเทียบระหว่างโครงสร้างและยูเนี่ยนใน C (ในรูปแบบตาราง)
พารามิเตอร์สำหรับการเปรียบเทียบ | ยูเนี่ยน | โครงสร้าง |
---|---|---|
คำจำกัดความของคีย์เวิร์ด | ใช้คีย์เวิร์ด “ยูเนี่ยน” | ใช้คีย์เวิร์ด “struct” |
ขนาดหน่วยความจำ | ขนาดเท่ากับองค์ประกอบของขนาดที่ใหญ่ที่สุด | ขนาดเท่ากับผลรวมขององค์ประกอบทั้งหมดในโครงสร้าง |
หน่วยความจำที่ใช้ร่วมกัน | หน่วยความจำขององค์ประกอบทั้งหมดถูกแชร์กับองค์ประกอบที่แตกต่างกัน | องค์ประกอบโครงสร้างไม่มีหน่วยความจำที่ใช้ร่วมกัน |
การเข้าถึงองค์ประกอบ | เข้าถึงได้เพียงองค์ประกอบเดียวในครั้งเดียว | สามารถเข้าถึงองค์ประกอบจำนวนเท่าใดก็ได้ในเวลาใดก็ได้ |
ตัวอย่าง | ตัวอย่างยูเนี่ยน{ประเภทข้อมูลและสมาชิก}obj; | ตัวอย่างโครงสร้าง{ประเภทข้อมูลและสมาชิก}obj; |
โครงสร้างใน C คืออะไร?
โครงสร้างคือกลุ่มข้อมูลที่ผู้ใช้กำหนดและเป็นการรวบรวมประเภทข้อมูลต่างๆ ตัวอย่างต่อไปนี้จะมีประโยชน์มาก สมมติว่าโปรแกรมเมอร์จำเป็นต้องจัดเก็บข้อมูลบางอย่าง เช่น นักเรียน ชื่อ ชั้นเรียน ที่อยู่ และอื่นๆ อีกมากมาย
มีสองวิธีในการแก้ไขปัญหานี้ วิธีแรกคือการสร้างประเภทข้อมูลที่แตกต่างกัน และอีกวิธีหนึ่งคือการสร้างโครงสร้าง
ในกรณีนี้ โครงสร้างกรณีนี้จะเป็นประโยชน์ เนื่องจาก หากคุณสร้างตัวแปรแยกจากกัน คุณจะต้องสร้างตัวแปรจำนวนมากสำหรับนักเรียนทุกคน และมันจะเป็นหายนะจริงๆ แทนที่จะใช้โครงสร้างซ้ำแล้วซ้ำอีก
โครงสร้างสามารถสร้างได้โดยใช้คำสำคัญ struct
ตัวอย่างเช่น
โครงสร้างโครงสร้าง_name{
ชนิดข้อมูล datatype_name;
ชนิดข้อมูล datatype_name;
ชนิดข้อมูล datatype_name;
ชนิดข้อมูล datatype_name;
…
};
หากคุณต้องการเข้าถึงสมาชิกข้อมูลใด ๆ คุณต้องสร้างวัตถุเช่น
โครงสร้าง structure_name object_name;
ด้วยไวยากรณ์ object_name.datatype_name คุณจะสามารถเข้าถึงชนิดข้อมูลในโครงสร้างได้
Union ใน C คืออะไร?
คล้ายกับโครงสร้างยูเนี่ยนเป็นอีกประเภทข้อมูลที่ผู้ใช้กำหนดในภาษาการเขียนโปรแกรม C เมื่อใดก็ตามที่โปรแกรมเมอร์กำหนดยูเนี่ยน จะมีการสร้างประเภทข้อมูลโดยผู้ใช้ แต่ไม่มีตำแหน่งหน่วยความจำ
ถ้าคุณต้องการจัดสรรหน่วยความจำ ก็ต้องสร้างตัวแปรในสหภาพ ยูเนี่ยนมีคุณสมบัติที่ไม่อนุญาตให้โปรแกรมเมอร์คนใดเข้าถึงประเภทข้อมูลได้มากกว่าหนึ่งประเภท
ดังนั้น ในการทำงานร่วมกัน โปรแกรมเมอร์สามารถเข้าถึงสมาชิกข้อมูลได้ครั้งละหนึ่งสมาชิก ให้เรายกตัวอย่างเล็ก ๆ
ยูเนี่ยน union_name
{
Data_type Datatype_name;
Data_type Datatype_name;
Data_type Datatype_name;
Data_type Datatype_name;
};
ในตัวอย่างข้างต้น โครงสร้างพื้นฐานของสหภาพจะปรากฏขึ้น เป็นวิธีที่โปรแกรมเมอร์สร้างสหภาพ หากคุณต้องการเข้าถึงข้อมูลประเภทใดก็ได้ในสหภาพ คุณต้องใช้ข้อมูลดังกล่าว ตัวดำเนินการคล้ายกับโครงสร้าง
ยูเนี่ยน union_name objname; ด้วยคำสั่งข้างต้น คุณสามารถสร้างวัตถุที่จะช่วยให้คุณเข้าถึงสมาชิกข้อมูลในสหภาพโดยใช้ตัวดำเนินการจุด
ความแตกต่างหลักระหว่างโครงสร้างและยูเนี่ยนในC
- โครงสร้างคือชนิดข้อมูลที่กำหนดโดยผู้ใช้ซึ่งจัดเก็บชนิดข้อมูลประเภทต่างๆ นอกจากนี้ยังใช้เพื่อแสดงค่าของประเภทข้อมูลอีกด้วย หากโปรแกรมเมอร์ต้องการกำหนดยูเนี่ยน โปรแกรมเมอร์จำเป็นต้องใช้โครงสร้างคำสำคัญ ในขณะที่ยูเนี่ยนต้องการคำสำคัญยูเนี่ยนสำหรับคำจำกัดความ
- ในโครงสร้าง ชนิดข้อมูลทั้งหมดจะถูกจัดเก็บไว้ในตำแหน่งอื่น และคุณสามารถเข้าถึงสมาชิกข้อมูลได้หลายคน ในขณะที่สมาชิกข้อมูลทั้งหมดใช้ตำแหน่งหน่วยความจำเดียวกันในสหภาพเดียวกัน และสามารถเข้าถึงสมาชิกข้อมูลได้เพียงคนเดียวในแต่ละครั้ง
- ในโครงสร้าง สำหรับการเริ่มต้นสมาชิกใดๆ สมาชิกหลายคนสามารถเริ่มต้นได้ในครั้งเดียว แต่ในกรณีของสหภาพแรงงาน สามารถเริ่มต้นได้เฉพาะสมาชิกคนแรกเท่านั้น
- ขนาดรวมของโครงสร้างขึ้นอยู่กับผลรวมของขนาดของสมาชิกข้อมูลทั้งหมด ในขณะที่ในกรณีของการรวมขนาดจะเท่ากับสมาชิกข้อมูลที่มีขนาดที่ใหญ่ที่สุดในบรรดาทั้งหมด
- ในโครงสร้าง ข้อมูลทุกประเภทมีการจัดสรรหน่วยความจำที่แตกต่างกัน ในขณะที่ในการทำงานร่วมกัน มีหน่วยความจำเดียวที่จัดสรรสำหรับสมาชิกข้อมูลที่มีขนาดที่ใหญ่ที่สุด
บทสรุป
โครงสร้างและสหภาพแรงงานเป็นทั้งประเภทข้อมูลที่กำหนดโดยผู้ใช้ซึ่งใช้ในการเขียนโปรแกรมภาษาซี โครงสร้างและสหภาพแรงงานมีแนวคิดเดียวกันในการจัดเก็บข้อมูลหลายประเภท และชนิดข้อมูลทั้งหมดในโครงสร้างและยูเนียนสามารถเข้าถึงได้ด้วยตัวดำเนินการจุด
โครงสร้างและสหภาพต่างกันเพียงในแง่ของขนาดและการจัดสรรหน่วยความจำ แต่กรณีการใช้งานเหมือนกัน ทั้งคู่เพิ่มความสามารถในการนำโค้ดกลับมาใช้ใหม่และอีกมากมาย หากคุณต้องการเก็บค่าจำนวนมากสำหรับชนิดข้อมูลเดียว โครงสร้างและการรวมจะเป็นประโยชน์
กรณีใช้งานพื้นฐานของโครงสร้างและสหภาพแรงงานคือเมื่อคุณต้องการเก็บบันทึกของพนักงาน โครงสร้างหรือสหภาพจะจัดเก็บข้อมูลทั้งหมดในโครงสร้างหรือสหภาพ จากนั้นคุณสามารถจัดเก็บหรือเข้าถึงข้อมูลได้ ข้อแตกต่างที่สำคัญคือการจัดสรรหน่วยความจำและการเข้าถึงประเภทข้อมูล