Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ความแตกต่างระหว่าง Structure และ Union ใน C

Structure (โครงสร้าง)

User-defined Data Type รวมข้อมูลหลายประเภทไว้ด้วยกัน สมาชิกแต่ละตัวมีหน่วยความจำแยกกัน

รูปแบบ

struct structure_name {
    member_definition;
} structure_variables;

ตัวอย่าง

#include <stdio.h>
#include <string.h>

struct Data {
    int i;
    long int f;
} data, data1;

int main() {
    data.i = 28;
    printf("The value of i : %d\n", data.i);
    printf("Memory size occupied by data : %d\t%d", sizeof(data), sizeof(data1));
    return 0;
}

ผลลัพธ์

The value of i : 28
Memory size occupied by data : 16 16

Union (ยูเนียน)

User-defined Data Type เช่นเดียวกัน แต่ สมาชิกทุกตัวใช้หน่วยความจำร่วมกัน ขนาด Union = ขนาดสมาชิกที่ใหญ่ที่สุด

รูปแบบ

union union_name {
    member_definition;
} union_variables;

ตัวอย่าง

#include <stdio.h>
#include <string.h>

union Data {
    int i;
    float f;
} data, data1;

int main() {
    printf("Memory size occupied by data : %d\t%d", sizeof(data), sizeof(data1));
    return 0;
}

ผลลัพธ์

Memory size occupied by data : 4 4

สรุปความแตกต่าง

คุณสมบัติStructureUnion
หน่วยความจำแยกกันแต่ละสมาชิกร่วมกัน (Shared)
ขนาดรวมผลรวมสมาชิกทุกตัว (+padding)ขนาดสมาชิกที่ใหญ่ที่สุด
ค่าเก็บได้ทุกสมาชิกพร้อมกันทีละอัน (Overwrite)
ใช้เมื่อต้องเก็บข้อมูลหลายค่าพร้อมกันประหยัดหน่วยความจำ เก็บค่าสลับกัน