C Kesatuan (Dengan Contoh)

Dalam tutorial ini, anda akan belajar mengenai kesatuan dalam pengaturcaraan C. Lebih khusus lagi, bagaimana membuat kesatuan, mengakses ahli-ahlinya dan mempelajari perbezaan antara kesatuan dan struktur.

Kesatuan adalah jenis yang ditentukan pengguna yang serupa dengan struktur di C kecuali satu perbezaan utama. Struktur memperuntukkan ruang yang cukup untuk menyimpan semua anggotanya sedangkan persatuan memperuntukkan ruang untuk menyimpan ahli terbesar sahaja.

Bagaimana untuk menentukan kesatuan?

Kami menggunakan unionkata kunci untuk menentukan kesatuan. Inilah contohnya:

 union car ( char name(50); int price; ); 

Kod di atas menentukan jenis turunan union car.

Buat pemboleh ubah kesatuan

Apabila kesatuan ditakrifkan, ia mewujudkan jenis yang ditentukan pengguna. Walau bagaimanapun, tidak ada memori yang diperuntukkan. Untuk memperuntukkan memori untuk jenis kesatuan tertentu dan bekerja dengannya, kita perlu membuat pemboleh ubah.

Inilah cara kita membuat pemboleh ubah penyatuan.

 union car ( char name(50); int price; ); int main() ( union car car1, car2, *car3; return 0; ) 

Kaedah lain untuk membuat pemboleh ubah kesatuan adalah:

 union car ( char name(50); int price; ) car1, car2, *car3; 

Dalam kedua kes tersebut, pemboleh ubah kesatuan car1, car2, dan car penunjuk kesatuan3 union carjenis dibuat.

Mengakses anggota kesatuan

Kami menggunakan .operator untuk mengakses anggota kesatuan. Untuk mengakses pemboleh ubah penunjuk, kami menggunakan juga menggunakan ->operator.

Dalam contoh di atas,

  • Untuk mengakses harga untuk car1, car1.pricedigunakan.
  • Untuk mengakses harga menggunakan car3, baik (*car3).priceatau car3->priceboleh digunakan.

Perbezaan antara kesatuan dan struktur

Mari kita ambil contoh untuk menunjukkan perbezaan antara kesatuan dan struktur:

 #include union unionJob ( //defining a union char name(32); float salary; int workerNo; ) uJob; struct structJob ( char name(32); float salary; int workerNo; ) sJob; int main() ( printf("size of union = %d bytes", sizeof(uJob)); printf("size of structure = %d bytes", sizeof(sJob)); return 0; ) 

Pengeluaran

 ukuran kesatuan = 32 ukuran struktur = 40 

Mengapa perbezaan ukuran pemboleh ubah kesatuan dan struktur?

Di sini, ukuran sJob adalah 40 bait kerana

  • saiznya name(32)ialah 32 bait
  • saiznya salaryialah 4 bait
  • saiznya workerNoialah 4 bait

Walau bagaimanapun, saiz uJob adalah 32 bait. Ini kerana ukuran pemboleh ubah persatuan akan selalu menjadi ukuran elemen terbesarnya. Dalam contoh di atas, ukuran elemen terbesarnya, ( name(32)), ialah 32 bait.

Dengan persatuan, semua ahli berkongsi memori yang sama .

Contoh: Mengakses Anggota Kesatuan

 #include union Job ( float salary; int workerNo; ) j; int main() ( j.salary = 12.3; // when j.workerNo is assigned a value, // j.salary will no longer hold 12.3 j.workerNo = 100; printf("Salary = %.1f", j.salary); printf("Number of workers = %d", j.workerNo); return 0; )

Pengeluaran

 Gaji = 0.0 Bilangan pekerja = 100 

Untuk mengetahui di mana kesatuan digunakan, kunjungi Mengapa kita memerlukan C Union?

Artikel menarik...