Lompat ke konten Lompat ke sidebar Lompat ke footer

Union Bahasa C dan Penjelasannya

Sama seperti halnya pada struct Bahasa C, Union pada bahasa C juga merupakan bentuk dari tipe data definisi user yang terdapat pada Bahasa C. Dimana pada Union, semua anggota berbagai lokasi disimpan pada lokasi memori yang sama.

Union Bahasa C dan Penjelasannya
Union Bahasa C

Sebelum memahami lebih jauh tentang materi Union Bahasa C dan Penjelasannya, terlebih dahulu pelajari materi tentang: Pointer Ke Array Bahasa C dan Penjelasannya [klik]Enum Bahasa C dan Penjelasannya [klik], dan Struct Bahasa C dan Penjelasannya [klik].

Contoh pada program bahasa C, kedua variabel x dan y akan merbagi lokasi memori yang sama. Jika nilai x dilakukan perubahan, maka hal tersebut juga dapat direpleksikan pada variabel y.

Baca Juga:

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


Cara Menentukan Ukuran Union Oleh Kompilator
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;
};

Referensi Tambahan:

Artikel ini didedikasikan kepada: Dzikru Robby Ar Rofiqi, Endang Rusniwati, Ericsson Dhimas Niagara, Fanca Bungsu Paranta, dan Gumilang Rizki Dwi Pratama.

6 komentar untuk "Union Bahasa C dan Penjelasannya"

  1. Apa yang dimaksud dengan union pada Bahasa C?

    BalasHapus
    Balasan
    1. Union pada Bahasa C merupakan tipe data khusus yang memungkinkan untuk menyimpan tipe data yang berbeda pada lokasi memori yang sama.

      Hapus
    2. Pengguna dapat menentukan union dengan banyak anggota, tetapi hanya terdapat satu anggota saja yang dapat berisi nilai pada waktu tertentu.

      Hapus
    3. Union pada bahasa C menyediakan cara yang lebih efisien untuk menggunakan lokasi memori yang sama untuk berbagai tujuan penggunaan yang berbeda-beda.

      Hapus
  2. Apa perbedaan antara struct dan union pada bahasa C?

    BalasHapus
    Balasan
    1. Struct 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

Hubungi admin melalui Wa : +62-896-2414-6106

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.

Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.

- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -