C Serikat
Serikat C
Dalam tutorial ini, Anda akan belajar tentang union dalam pemrograman C. Lebih khusus lagi, cara membuat serikat pekerja, mengakses anggotanya, dan mempelajari perbedaan antara serikat pekerja dan struktur.
Serikat adalah tipe yang ditentukan pengguna yang mirip dengan struct di C kecuali untuk satu perbedaan utama.
Struktur mengalokasikan ruang yang cukup untuk menyimpan semua anggotanya, sedangkan serikat hanya dapat menampung satu nilai anggota pada satu waktu .
Bagaimana cara mendefinisikan serikat pekerja?
Kami menggunakan union
kata kunci untuk mendefinisikan serikat pekerja. Ini contohnya:
union car
{
char name[50];
int price;
};
Kode di atas mendefinisikan tipe turunan union car
.
Buat variabel gabungan
Ketika sebuah serikat didefinisikan, itu menciptakan tipe yang ditentukan pengguna. Namun, tidak ada memori yang dialokasikan. Untuk mengalokasikan memori untuk tipe serikat 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 , mobil2 , dan penunjuk gabungan car3 dari union car
jenis dibuat.
Akses anggota serikat
Kami menggunakan .
operator untuk mengakses anggota serikat pekerja. Dan untuk mengakses variabel pointer, kita menggunakan ->
operator.
Pada contoh di atas,
- Untuk mengakses harga untuk
car1
, car1.price
digunakan.
- Untuk mengakses harga menggunakan
car3
, baik (*car3).price
atau car3->price
dapat digunakan.
Perbedaan antara serikat pekerja dan struktur
Mari kita ambil contoh untuk menunjukkan perbedaan antara serikat pekerja dan struktur:
#include <stdio.h>
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("\nsize of structure = %d bytes", sizeof(sJob));
return 0;
}
Keluaran
size of union = 32
size of structure = 40
Mengapa perbedaan ukuran variabel gabungan dan struktur ini?
Di sini, ukuran sJob adalah 40 byte karena
- ukuran
name[32]
adalah 32 byte
- ukuran
salary
adalah 4 byte
- ukuran
workerNo
adalah 4 byte
Namun, ukuran uJob adalah 32 byte. Itu karena ukuran variabel gabungan akan selalu menjadi ukuran elemen terbesarnya. Pada 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 <stdio.h>
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\n", j.salary);
printf("Number of workers = %d", j.workerNo);
return 0;
}
Keluaran
Salary = 0.0
Number of workers = 100
Untuk mempelajari di mana serikat pekerja digunakan, kunjungi Mengapa kami membutuhkan Serikat Pekerja C?