C++ : union
C++ : Contoh Program union |
union
Bentuk penulisan dan cara pengaksesannya hampir sama dengan struct. Namun, union digunakan untuk menyatakan suatu memori dengan nama lebih dari satu. Artinya, variabel-variabel yang ada di dalam union menempati alamat memori yang sama.
Lihat contoh pendeklarasian union berikut ini
:
union MyUnion
{
unsigned int x;
unsigned char y[2];
};
Pada contoh pendeklarasian di atas, variabel
x dan y menempati alamat memori yang sama.
Inisialisasi
Union
Sama dengan struktur, kita juga dapat melakukan
inisialisasi pada variabel union.
union MyUnion
init = { 0x1441 } -> dengan ini maka nilai dari
variabel x adalah 0x1441
Berikut ini program C++ union :
/*
N.N. Blog
Compiler : Microsoft Visual Studio 2012
*/
#include <iostream>
using namespace std;
#include <conio.h>
#include <iomanip> //setiosflags
union MyUnion
{
//unsigned (tak bertanda) -> hanya bilangan positif
saja
unsigned int x;
unsigned char y[2];
};
int main()
{
union MyUnion init =
{ 0x1441 };
cout<<"Berbagi memori dengan union"<<endl;
cout<<"---------------------------"<<endl;
//ios::showbase -> menunjukkan basis bilangannnya
//hex -> basis 16 (heksadesimal)
cout<<setiosflags(ios::showbase);
cout<<hex<<"x :
"<<init.x<<endl;
cout<<hex<<"y[0] : "<<(int)init.y[0]<<endl;
cout<<hex<<"y[1] : "<<(int)init.y[1]<<endl;
_getche();
return EXIT_SUCCESS;
}
Output
Berbagi memori dengan union
---------------------------
x : 0x1441
y[0] : 0x41
y[1] : 0x14
Lanjut biar lebih jelas lagi..
union MyUnion
{
int x;
double y;
};
struct MyStruct
{
int x;
double y;
};
Sekilas kedua bentuk diatas
hampir sama. Namun keduanya jelas berbeda, jika
pada struct, variabel x dan y menempati alamat memori yang berbeda, sehingga
perubahan nilai varibel x tidak akan mempengaruhi nilai variabel y, dan
sebaliknya. Sedangkan jika menggunakan
union, variabel x dan y menempati alamat memori yang sama, sehingga perubahan
pada variabel a akan merubah variabel b juga, dan sebaliknya.
Lalu
bagaimana dengan ukuran union-nya?
Ukuran dari suatu union akan ditentukan dari
ukuran terbesar dari anggotanya. Karena pada union diatas terdapat anggota
double dimana double berukuran 8 byte, maka ukuran dari union diatas adalah 8
byte.
Berikut ini program C++ yang menunjukkan bahwa anggota pada union menempati memori yang sama :
/*
N.N. Blog
Compiler :
Microsoft Visual Studio 2012
*/
#include <iostream>
#include <conio.h>
using namespace std;
union MyUnion
{
int x;
int y;
};
int main()
{
//memberi nilai 10 pada variabel x
MyUnion
data;
data.x = 10;
cout<<"Nilai varibel dengan Union "<<endl;
cout<<"-------------------------- "<<endl;
cout<<"Nilai x = "<<data.x<<endl;
cout<<"Nilai y = "<<data.y<<endl;
//y bernilai sama dengan x
_getche();
return EXIT_SUCCESS;
}
Output :
Nilai varibel dengan Union
--------------------------
Nilai x = 10
Nilai y = 10
Penjelasan :
Variabel y memiliki nilai yang
sama dengan variabel x meskipun tidak ada pernyataan yang menyatakan bahwa
nilai y telah diinisialisasi. Dan juga tidak terdapat penugasan antar varibel
(y = x). Hal inilah yang menunjukkan bahwa memori yang ditempati kedua variabel
adalah sama (Berbagi memori).
[RS]
Klik Like & Share jika postingan ini bermanfaat
Apa tanggapan Anda?
Berikan tanggapan Anda melalui kolom komentar yang telah disediakan.
- Gunakan bahasa yang sopan;
- Saat menjadikan postingan pada blog ini sebagai referensi, jangan lupa mencantumkan sumbernya (link dari blog ini).
Jika blog ini bermanfaat jangan lupa memberikan 'like' atau 'share' untuk mendapatkan update terbaru.
Terima kasih