Assalamu’alaikum sobat pencari ilmu.
Karena pada artikel sebelumnya kita
telah membahas tentang struct dalam pemrograman Bahasa C, belum afdhol rasanya
kalau kita tidak membahas union. Jadi pada kesempatan kali ini admin akan
mengulas sedikit tentang union dalam pemrograman Bahasa C. Langsung aja
simak ulasan berikut.
Union
Pada dasar nya union mirip dengan
struct, hanya saja element-element pada union menempati lokasi memori yang
sama. Penggunaan union ini sendiri bertujuan untuk penghematan memori. Karena
element-element union menggunakan lokasi memori yang sama, maka penggunaan
element-elementnya pun digunakan secara bergantian. Untuk ukuram meori yang
digunakan union, menyesuaikan dengan ukuran terbesar dari element yang terdapat
pada union tersebut. Umumnya union digukan untuk menangani dua atau tiga
element dengan type data yang mirip, misalnya char dengan int atau float dengan
double.
Untuk pendeklarasian union ini
mirip dengan pendeklarasian struct, hanya saja jika pada struct menggunakan
kata kunci struct, pada union menggunakan kata kunci union.
Betuk umum pendeklarasian:
Bentuk pendeklarasian object
dengan model union:
Bentuk pendeklarasian union
dengan langsung menyertakan object yang menggunakan model tersebut :
Bentuk pendeklarasian union
dengan langsung meyertakan object nya, hanya saja pada bentuk berikut tidak
dapat lagi menambah object yang dapat menggunakan model union tersebut pada
fungsi lain:
Karena element-element pada union
menggunakan lokasi memori yang sama, sehingga jika terdapat beberapa element
dengan type data yang sama, maka nilai dari kedua element terebut akan sama
juga.
Contoh:
1.element union dengan type data
yang sama
#include <stdio.h> union{ int a; int b; }x; void main(){ x.a=10; printf("nilai a adalah %d\n",x.a); printf("nilai b adalah %d",x.b); }
Maka akan didapatkan output :
Pada listing diatas yang diberi
nilai 10 adalah variable a yang menjadi element union x. Tetapi karena variable
a dan b sama-sama menjadi element union x dan memiliki type data yang sama
yaitu integer. Sehingga nilai yang ada pada kedua elemet tersebut adalah sama.
Begitu pula jika nilai b diganti maka nilai a juga akan berubah.
Contoh :
#include <stdio.h>
union{
int a;
int b;
}x;
void main(){
x.a=10;
x.b=20;
printf("nilai a adalah %d\n",x.a);
printf("nilai b adalah %d",x.b);
}
Maka akan di dapatkan output :
Tetapi jika element pada suatu
union memiliki type data yang berbeda, maka nilai pada element tersebut tidak
akan berubah jika dilakukan perubahan pada element lain dengan type yang
berbeda.
Contoh :
Maka akan didapat output :
#include <stdio.h> union{ int a; char b; }x; void main(){ x.a=10; x.b='b'; printf("nilai a adalah %d\n",x.a); printf("nilai b adalah %c",x.b); }
Maka akan didapat output :
Sama hal nya dengan struct, untuk mengakses element dari union terdapat dua cara yaitu :
Pengaksesan dengan operator
nama_objek.nama_elementPengaksesan lewat pointer
pointer_ke_union->element atau (*pointer_ke_union).element
Dan untuk menampilkan nilai dari
element union sebagai output juga hanya dapat dilakukan dengan pengaksesan
operator.
Contoh :
1. Menghitung keliling dan luas
lingkaran
#include <stdio.h> #define PHI 3.14 union lingkaran{ float keliling; float luas; }; void hit_kll(union lingkaran *lkrn, float r); void hit_luas(union lingkaran *lkrn, float r); void main(void){ float r; union lingkaran lk; printf("Masukkan panjang jari-jari : "); scanf("%f",&r); hit_kll(&lk, r); printf("Keliling lingkaran : %.2f\n",lk.keliling); hit_luas(&lk, r); printf("Luas Lingkaran : %.2f\n",lk.luas); } void hit_kll(union lingkaran *lkrn, float r){ lkrn->keliling = 2 * PHI * r; } void hit_luas(union lingkaran *lkrn, float r){ (*lkrn).luas = PHI * r * r; }
Maka akan didapatkan output :
Gimana? Udah ngerti apa itu union? Semoga udah ngerti semua ya. Mungkin
hanya ini yang dapat admin bagikan pada artikel union dalam pemrograman Bahasa C
kali ini. Pada artikel selanjutnya masih seputaran struct dan union, admin akan
membahas tentang typedef pada pemrograman Bahasa C.
Semoga bermanfaat untuk kita semua.
Wassalamu’alaikum.
0 comment:
Post a Comment