Serikat C (Dengan Contoh)

Dalam tutorial ini, Anda akan belajar tentang serikat pekerja dalam pemrograman C. Lebih khusus lagi, cara membuat serikat, mengakses anggotanya, dan mempelajari perbedaan antara serikat dan struktur.

Serikat pekerja adalah tipe yang ditentukan pengguna yang mirip dengan struct di C kecuali untuk satu perbedaan utama. Struktur mengalokasikan cukup ruang untuk menyimpan semua anggotanya di mana serikat pekerja mengalokasikan ruang untuk menyimpan hanya anggota terbesar.

Bagaimana cara mendefinisikan serikat pekerja?

Kami menggunakan unionkata kunci untuk mendefinisikan serikat pekerja. Berikut contohnya:

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

Kode di atas mendefinisikan tipe turunan union car.

Buat variabel gabungan

Ketika gabungan ditentukan, itu membuat tipe yang ditentukan pengguna. Namun, tidak ada memori yang dialokasikan. Untuk mengalokasikan memori untuk tipe gabungan tertentu dan bekerja dengannya, kita perlu membuat variabel.

Inilah cara kami membuat variabel gabungan.

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

Cara lain untuk membuat variabel gabungan adalah:

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

Dalam kedua kasus, variabel gabungan car1, car2, dan penunjuk gabungan car3 union carakan dibuat.

Akses anggota serikat

Kami menggunakan .operator untuk mengakses anggota serikat. Untuk mengakses variabel pointer, kami menggunakan juga menggunakan ->operator.

Dalam contoh di atas,

  • Untuk mengakses harga car1, car1.pricedigunakan.
  • Untuk mengakses harga menggunakan car3, salah satu (*car3).priceatau car3->pricedapat digunakan.

Perbedaan antara serikat dan struktur

Mari kita ambil contoh untuk menunjukkan perbedaan antara serikat 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; ) 

Keluaran

 ukuran penyatuan = 32 ukuran struktur = 40 

Mengapa ada perbedaan dalam ukuran variabel serikat dan struktur?

Di sini, ukuran sJob adalah 40 byte karena

  • ukurannya name(32)adalah 32 byte
  • ukurannya salaryadalah 4 byte
  • ukurannya workerNoadalah 4 byte

Namun, ukuran uJob adalah 32 byte. Itu karena ukuran variabel gabungan akan selalu menjadi ukuran elemen terbesarnya. Dalam contoh di atas, ukuran elemen terbesarnya, ( name(32)), adalah 32 byte.

Dengan serikat pekerja, semua anggota berbagi memori yang sama .

Contoh: Mengakses Anggota Serikat

 #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; )

Keluaran

 Gaji = 0,0 Jumlah pekerja = 100 

Untuk mempelajari di mana serikat digunakan, kunjungi Mengapa kita membutuhkan Serikat C?

Artikel yang menarik...