Union Bahasa C dan Penjelasannya
Contoh:
#include <stdio.h>
// Deklarasi union adalah sama
// seperti deklarasi struct
// bahasa C.
union test
{int x, y;};
int main()
{
// Sebuah variabel union t
union test t;
// t.y juga mendapatkan nilai
// sebesar 2
t.x = 2;
printf("After making x = 2:\n x = %d, y = %d\n\n",
t.x, t.y);
// t.x juga mendapatkan update
// nilai menjadi 10
t.y = 10;
printf("After making y = 10:\n x = %d, y = %d\n\n",
t.x, t.y);
return 0;
}
Output:After making x = 2:
x = 2, y = 2
After making y = 10:
x = 10, y = 10
Ukuran dari sebuah Union diambil berdasarkan nilai ukuran dari besar anggota yang terdapat pada Union.
Contoh:
#include <stdio.h>
union test1 {
int x;
int y;
} Test1;
union test2 {
int x;
char y;
} Test2;
union test3 {
int arr[10];
char y;
} Test3;
int main()
{
printf("sizeof(test1) = %lu, sizeof(test2) = %lu, "
"sizeof(test3) = %lu",
sizeof(Test1),
sizeof(Test2),
sizeof(Test3));
return 0;
}
Output:sizeof(test1) = 4, sizeof(test2) = 4, sizeof(test3) = 40
Pointer Ke Union
Sama seperti struct, pada Union juga dapat diciptakan pointer ke Union untuk mengakses anggota dengan menggunakan operator panah (->). Berhatikan demonstrasi contoh program berikut.
Contoh:
#include <stdio.h>
union test {
int x;
char y;
};
int main()
{
union test p1;
p1.x = 65;
// p2 adalah pointer
// ke union p1.
union test* p2 = &p1;
// Mengakses anggota union
// menggunakan pointer.
printf("%d %c", p2->x, p2->y);
return 0;
}
Output:65 A
Penerapan Union pada Bahasa C
Union dapat sangat bergunakan pada berbagai macam situasi dalam pemrograman Bahasa C, dimana dibutuhkan suatu lokasi memori yang sama untuk dua jenis atau lebih anggota yang memiliki nama yang berbeda. Contoh, dilakukan suatu implementasi dari sebuah struktur tree binari, dimana setiap bagian node leaf-nya memiliki sebuah nilai data double, sementara setiap internal node-nya memiliki pointer, dimana ke dua children-nya berbeda, tetapi tidak memiliki data apapun. Jika ingin mendeklarasikan hal tersebut menggunakan Bahasa C, maka dapat dilakukan dengan cara membuat kode program sebagai berikut:
struct NODE {
struct NODE* left;
struct NODE* right;
double data;
};
Maka setiap node membutuhkan memori sebesar 16 bytes, dengan separuh ukuran byte tersebut akan terbuang untuk setiap tipe data dari node yang digunakan. Namun demikian, jika node dideklarasikan dengan cara yang lain, maka ruang yang terbuang tersebut dapat dihemat dengan cara sebagai berikut:
struct NODE {
bool is_leaf;
union {
struct
{
struct NODE* left;
struct NODE* right;
} internal;
double data;
} info;
};
- Anggota Array Fleksibel Struct Pada Bahasa C [klik]
- Perbedaan Antara Struct dan Union pada Bahasa C [klik]
- Perbedaan Struct Bahasa C dan C++ [klik]
- Anonimus Union dan Struct Bahasa C dan Penjelasannya [klik]
- Compound Literals Bahasa C Beserta Penjelasannya [klik]
- Pengurutan Struct Bahasa C Beserta Contoh Programnya [klik]
- Layout Memori Bahasa C dan Penjelasannya [klik]
Apa yang dimaksud dengan union pada Bahasa C?
BalasHapusUnion pada Bahasa C merupakan tipe data khusus yang memungkinkan untuk menyimpan tipe data yang berbeda pada lokasi memori yang sama.
HapusPengguna dapat menentukan union dengan banyak anggota, tetapi hanya terdapat satu anggota saja yang dapat berisi nilai pada waktu tertentu.
HapusUnion pada bahasa C menyediakan cara yang lebih efisien untuk menggunakan lokasi memori yang sama untuk berbagai tujuan penggunaan yang berbeda-beda.
HapusApa perbedaan antara struct dan union pada bahasa C?
BalasHapusStruct pada bahasa C merupakan wadah yang digunakan untuk menyimpan variabel data dari tipe data yang berbda dan juga mendukung penyimpanan variabel yang ditentukan pengguna, sedangkan union merupakan wadah serupa seperti struct yang dapat menampung berbagai jenis variabel yang berbeda yang ditentukan oleh pengguna namun pada satu lokasi memori yang sama.
Hapus