ความแตกต่างที่สำคัญ – โครงสร้างเทียบกับสหภาพใน C
อาร์เรย์เป็นโครงสร้างข้อมูลที่รองรับโดยภาษา C สามารถใช้อาร์เรย์เพื่อจัดเก็บองค์ประกอบข้อมูลประเภทเดียวกันได้ หากมีข้อความเป็นเครื่องหมาย int [10]; เครื่องหมายคืออาร์เรย์ที่สามารถเก็บเครื่องหมายได้สิบเครื่องหมายและทั้งหมดเป็นจำนวนเต็ม บางครั้งจำเป็นต้องจัดเก็บองค์ประกอบข้อมูลประเภทต่าง ๆ ในตำแหน่งหน่วยความจำเดียวกัน ตัวอย่างเช่น พนักงานสามารถมีรหัสพนักงาน ชื่อ แผนก อายุ ฯลฯ ซึ่งเป็นประเภทข้อมูลที่แตกต่างกัน ดังนั้นจึงจำเป็นต้องมีวิธีการในการจัดเก็บองค์ประกอบข้อมูลต่างๆ ไว้เป็นหน่วยเดียว โครงสร้างและสหภาพใน C ใช้สำหรับจัดเก็บองค์ประกอบข้อมูลประเภทต่างๆ ในตำแหน่งหน่วยความจำเดียวกันโครงสร้างและสหภาพมีความคล้ายคลึงกัน แต่ส่วนใหญ่แยกจากกันเนื่องจากการจัดสรรหน่วยความจำ หน่วยความจำที่จำเป็นในการจัดเก็บตัวแปรโครงสร้างคือผลรวมของขนาดหน่วยความจำของสมาชิกทั้งหมด หน่วยความจำที่จำเป็นในการจัดเก็บตัวแปรยูเนี่ยนคือหน่วยความจำที่จำเป็นสำหรับองค์ประกอบที่ใหญ่ที่สุดในยูเนี่ยน นั่นคือข้อแตกต่างที่สำคัญระหว่างโครงสร้างและสหภาพใน C บทความนี้กล่าวถึงความแตกต่างระหว่างโครงสร้างและสหภาพใน C.
โครงสร้างในภาษา C คืออะไร
โครงสร้างเป็นประเภทข้อมูลที่กำหนดโดยผู้ใช้ในภาษา C ซึ่งช่วยในการรวมรายการข้อมูลประเภทต่างๆ โครงสร้างสามารถแสดงเร็กคอร์ดได้ นักเรียนสามารถมี student_id, student_name เป็นต้น แทนที่จะเก็บแต่ละตัวแปรแยกกัน รายการข้อมูลที่แตกต่างกันทั้งหมดเหล่านี้สามารถบีบอัดเป็นหน่วยเดียวโดยใช้โครงสร้างได้ ถูกกำหนดโดยใช้คำสำคัญ 'struct' ในโครงสร้าง สมาชิกทั้งหมดสามารถเข้าถึงได้เมื่อใดก็ได้ ต่อไปนี้จะสร้างโครงสร้างประเภทข้อมูลที่ได้รับ struct Student
จัดโครงสร้าง นักเรียน {
intstudent_id;
char student_name[20];
};
สำหรับโครงสร้างข้างต้น สามารถประกาศตัวแปรได้ดังนี้
struct นักเรียนนักศึกษา1 นักเรียน2 นักเรียน3;
มีสองวิธีในการเข้าถึงสมาชิกของโครงสร้าง นั่นคือโดยใช้ตัวดำเนินการสมาชิก (.) และตัวดำเนินการตัวชี้โครงสร้าง (->) สมาชิกสามารถเข้าถึงได้โดยใช้ structure_variable_name ชื่อสมาชิก. หากโปรแกรมเมอร์ต้องการเข้าถึงชื่อนักเรียน 2 เขาสามารถเขียนคำสั่งเป็น printf(student2.student_namename);
ดูโปรแกรมด้านล่างพร้อมโครงสร้าง

รูปที่ 01: โปรแกรม C พร้อมโครงสร้าง
ตามโปรแกรมด้านบน นักเรียนคือโครงสร้างประกอบด้วย student_id และ student_name มีการประกาศตัวแปรประเภทโครงสร้างสองแบบในโปรแกรมหลัก พวกเขาถูกเรียกว่า student1 และ student2 id ของ student1 ถูกกำหนดด้วยค่า 1 โดยใช้ตัวดำเนินการสมาชิกเป็น student1.student_id=1 ชื่อ “แอน” เป็นสตริง ดังนั้นจึงถูกคัดลอกไปยังสมาชิก student_name โดยใช้ฟังก์ชันคัดลอกสตริง strcpy รหัสและชื่อถูกกำหนดให้กับ student2 ในลักษณะเดียวกัน สุดท้าย ค่าเหล่านั้นจะถูกพิมพ์โดยใช้ตัวดำเนินการสมาชิก
จำนวนหน่วยความจำที่ต้องใช้ในการจัดเก็บตัวแปรโครงสร้างคือผลรวมของขนาดหน่วยความจำของสมาชิกทั้งหมด student_id มี 4 ไบต์และ student_name มี 20 ไบต์ (หนึ่งไบต์ต่ออักขระ) จำนวนทั้งหมด 24 ไบต์คือผลรวมของขนาดหน่วยความจำที่โครงสร้างต้องการ
สหภาพใน C คืออะไร
A union เป็นประเภทข้อมูลที่กำหนดโดยผู้ใช้ในภาษา C ซึ่งช่วยในการจัดเก็บข้อมูลประเภทต่างๆ ในตำแหน่งหน่วยความจำเดียวกัน หนังสือสามารถมีคุณสมบัติ เช่น book_name ราคา เป็นต้น แทนที่จะสร้างตัวแปรสำหรับแต่ละรายการ สามารถใช้สหภาพเพื่อกระชับประเภทข้อมูลที่แตกต่างกันทั้งหมดให้เป็นหน่วยเดียวโดยใช้สหภาพถูกกำหนดโดยใช้คำสำคัญ 'union' ต่อไปนี้จะสร้าง data union Book ที่ได้รับ
unionBook{
ชื่ออักขระ[20];
ราคาสองเท่า;
};
สำหรับสหภาพข้างต้น สามารถประกาศตัวแปรได้ดังนี้
union เล่มที่1 เล่มที่2;
มีสองวิธีในการเข้าถึงสมาชิกของสหภาพ นั่นคือโดยใช้ตัวดำเนินการสมาชิก (.) และตัวดำเนินการตัวชี้โครงสร้าง (->) สมาชิกสามารถเข้าถึงได้โดยใช้ union_variable_name ชื่อสมาชิก. หากโปรแกรมเมอร์ต้องการเข้าถึงชื่อ book1 เขาสามารถเขียนคำสั่งเป็น printf(book1.name);
ดูโปรแกรมด้านล่างกับสหภาพแรงงาน

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

รูปที่ 03: โปรแกรมดัดแปลง C กับสหภาพ
ตามโปรแกรมข้างต้น Book เป็นสหภาพ book1 และ book2 เป็นตัวแปรประเภทยูเนี่ยน ขั้นแรก ค่าสำหรับชื่อ book1 ถูกกำหนดและพิมพ์ออกมา จากนั้นกำหนดค่าชื่อ book2 และพิมพ์ออกมา สมาชิกทั้งหมดพิมพ์ถูกต้องเนื่องจากมีการใช้งานสมาชิกครั้งละหนึ่งราย หน่วยความจำที่จำเป็นในการจัดเก็บสหภาพคือหน่วยความจำที่จำเป็นสำหรับองค์ประกอบที่ใหญ่ที่สุดของสหภาพในโปรแกรมข้างต้น ตัวแปรชื่อคือ 20 ไบต์ มันใหญ่กว่าราคา ดังนั้น การจัดสรรหน่วยความจำสำหรับสหภาพคือ 20 ไบต์
ความคล้ายคลึงกันระหว่างโครงสร้างและสหภาพใน C คืออะไร
- ทั้งโครงสร้างและสหภาพใน C เป็นประเภทข้อมูลที่กำหนดโดยผู้ใช้
- ทั้งโครงสร้างและสหภาพใน C สามารถใช้เก็บข้อมูลประเภทต่างๆ ในตำแหน่งหน่วยความจำเดียวกันได้
โครงสร้างและสหภาพใน C แตกต่างกันอย่างไร
โครงสร้างกับสหภาพใน C |
|
โครงสร้างเป็นประเภทข้อมูลที่กำหนดโดยผู้ใช้ในภาษา C ที่อนุญาตให้รวมข้อมูลประเภทต่างๆ เข้าด้วยกัน | Union เป็นประเภทข้อมูลที่กำหนดโดยผู้ใช้ในภาษา C ที่อนุญาตให้รวมข้อมูลประเภทต่างๆ เข้าด้วยกัน |
การเข้าถึง | |
ในโครงสร้าง คุณสามารถเข้าถึงสมาชิกทั้งหมดได้ตลอดเวลา | ในสหภาพ สมาชิกหนึ่งคนเท่านั้นที่สามารถเข้าถึงได้ในแต่ละครั้ง และสมาชิกคนอื่นๆ ทั้งหมดจะมีค่าขยะ |
การจัดสรรหน่วยความจำ | |
หน่วยความจำที่จำเป็นในการจัดเก็บตัวแปรโครงสร้างคือผลรวมของขนาดหน่วยความจำของสมาชิกทั้งหมด | หน่วยความจำที่จำเป็นในการจัดเก็บตัวแปรยูเนี่ยนคือหน่วยความจำที่จำเป็นสำหรับองค์ประกอบที่ใหญ่ที่สุดในสหภาพ |
คำหลัก | |
คำสำคัญที่ใช้กำหนดโครงสร้างคือ 'struct' | คำสำคัญที่ใช้ในการกำหนดสหภาพคือ 'สหภาพ' |
สรุป – โครงสร้างเทียบกับสหภาพใน C
อาร์เรย์ใช้เพื่อจัดเก็บองค์ประกอบข้อมูลประเภทเดียวกันบางครั้งจำเป็นต้องจัดเก็บองค์ประกอบข้อมูลประเภทต่างๆ ไว้ในตำแหน่งหน่วยความจำเดียวกัน ภาษาการเขียนโปรแกรม C จัดเตรียมโครงสร้างและสหภาพเพื่อให้งานนี้สำเร็จ ทั้งสองประเภทเป็นประเภทข้อมูลที่กำหนดโดยผู้ใช้ หน่วยความจำที่จำเป็นในการจัดเก็บตัวแปรโครงสร้างคือผลรวมของขนาดหน่วยความจำของสมาชิกทั้งหมด หน่วยความจำที่จำเป็นในการจัดเก็บตัวแปรยูเนี่ยนคือหน่วยความจำที่จำเป็นสำหรับองค์ประกอบที่ใหญ่ที่สุดในยูเนี่ยน นี่คือความแตกต่างระหว่างโครงสร้างและสหภาพใน C.