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

สารบัญ:

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

วีดีโอ: ความแตกต่างระหว่างโครงสร้างและสหภาพใน C

วีดีโอ: ความแตกต่างระหว่างโครงสร้างและสหภาพใน C
วีดีโอ: C language - Class 21 : Unions in C with examples and Differences between Structures and Unions 2024, กรกฎาคม
Anonim

ความแตกต่างที่สำคัญ – โครงสร้างเทียบกับสหภาพใน 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);

ดูโปรแกรมด้านล่างพร้อมโครงสร้าง

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

รูปที่ 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);

ดูโปรแกรมด้านล่างกับสหภาพแรงงาน

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

รูปที่ 02: โปรแกรม C โดยใช้สหภาพ

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

KeyDifference ระหว่างโครงสร้างและยูเนี่ยนในC
KeyDifference ระหว่างโครงสร้างและยูเนี่ยนในC

รูปที่ 03: โปรแกรมดัดแปลง C กับสหภาพ

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

ความคล้ายคลึงกันระหว่างโครงสร้างและสหภาพใน C คืออะไร

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

โครงสร้างและสหภาพใน C แตกต่างกันอย่างไร

โครงสร้างกับสหภาพใน C

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

สรุป – โครงสร้างเทียบกับสหภาพใน C

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