Perbedaan Antara Struct dan Union pada Bahasa C
Sebelum memahami lebih dalam materi tentang Perbedaan Antara Struct dan Union pada Bahasa C, terlebih dahulu pelajari materi tentang: Anggota Array Fleksibel Struct Pada Bahasa C, Bit Fields Bahasa C Beserta Penjelasannya, dan Operasi Pada Variabel Struct Bahasa C.
Struct pada Bahasa C
Struct pada Bahasa C merupakan suatu tipe data user-defined yang tersedia pada bahasa C yang memungkinkan untuk melakukan kombinasi item data yang berbeda-beda. Struct digunakan untuk merepresentasikan suatu record.struct [structure name]
{ member definition;
member definition;
...
member definition; };
Union pada Bahasa C
Union pada Bahasa C merupakan suatu tipe data spesial yang tersedia pada Bahasa C yang memungkinkan untuk melakukan suatu proses penyimpanan data dengan tipe yang berbeda pada lokasi memori yang sama. Union dapat didefinisikan dengan banyak anggota, tetapi hanya satu anggota yang dapat mengandung sebuah nilai pada waktu yang bersamaan. Union menyediakan suatu cara yang efisien dari penggunaan lokasi memori untuk tujuan ganda.Pendefinisian Sebuah Union: Untuk mendefinisikan suatu union maka dapat menggunakan statement union pada bahasa C, yang sama halnya ketika melakukan pendefinisian struct pada Bahasa C. Statement union bahasa C mendefinisikan sebuah tipe data baru dengan lebih dari satu anggota untuk suatu program pada Bahasa C. Format dari statement union adalah sebagai berikut:
union [union name]
{ member definition;
member definition;
...
member definition; };
Persamaan Struct dan Union Bahasa C
Keduanya adalah tipe data yang ditentukan pengguna, yang digunakan untuk menyimpan data dari berbagai tipe sebagai satu unit. Anggotanya dapat berupa objek dari jenis apa pun, termasuk struktur dan gabungan atau larik lainnya. Anggota juga dapat terdiri dari bidang bit. Struct dan Union hanya mendukung operator penugasan = dan sizeof. Dua Struct atau Union pekerja dalam penugasan harus memiliki anggota dan tipe anggota yang sama. Struct dan Union dapat diteruskan oleh nilai ke fungsi dan dikembalikan oleh nilai oleh fungsi itu sendiri. Argumen pada Struct dan Union harus memiliki tipe yang sama dengan parameter fungsi. Struct dan Union dilewatkan dengan nilai seperti variabel skalar sebagai parameter yang sesuai. Operator ‘.’ digunakan untuk mengakses anggota dari Struct dan Union.Perbedaan Antara Struct dan Union pada Bahasa C
Untuk mengetahui perbedaan antara struct dan union perhatikan contoh program Bahasa C sebagai berikut:Contoh:
// Program Bahasa C untuk
// mengilustrasikan perbedaan
// diantara struct dan union.
#include <stdio.h>
#include <string.h>
// Deklarasi struct
struct struct_example
{
int integer;
float decimal;
char name[20];
};
// Deklarasi union
union union_example
{
int integer;
float decimal;
char name[20];
};
void main()
{
// Menciptakan variabel untuk
// struct dan inisialisasi
// nilai.
struct struct_example s={18,38,"makandanmakan"};
// Menciptakan variabel untuk
// union dan inisialisasi
// nilai.
union union_example u={18,38,"makandanmakan"};
printf("structure data:\n integer: %d\n"
"decimal: %.2f\n name: %s\n",
s.integer, s.decimal, s.name);
printf("\nunion data:\n integer: %d\n"
"decimal: %.2f\n name: %s\n",
u.integer, u.decimal, u.name);
// Perbedaan dua dan tiga
printf("\nsizeof structure : %d\n", sizeof(s));
printf("sizeof union : %d\n", sizeof(u));
// Perbedaan lima
printf("\n Accessing all members at a time:");
s.integer = 183;
s.decimal = 90;
strcpy(s.name, "makandanmakan");
printf("structure data:\n integer: %d\n "
"decimal: %.2f\n name: %s\n",
s.integer, s.decimal, s.name);
u.integer = 183;
u.decimal = 90;
strcpy(u.name, "makandanmakan");
printf("\nunion data:\n integer: %d\n "
"decimal: %.2f\n name: %s\n",
u.integer, u.decimal, u.name);
printf("\n Accessing one member at time:");
printf("\nstructure data:");
s.integer = 240;
printf("\ninteger: %d", s.integer);
s.decimal = 120;
printf("\ndecimal: %f", s.decimal);
strcpy(s.name, "C programming");
printf("\nname: %s\n", s.name);
printf("\n union data:");
u.integer = 240;
printf("\ninteger: %d", u.integer);
u.decimal = 120;
printf("\ndecimal: %f", u.decimal);
strcpy(u.name, "C programming");
printf("\nname: %s\n", u.name);
// Perbedaan empat
printf("\nAltering a member value:\n");
s.integer = 1218;
printf("structure data:\n integer: %d\n "
" decimal: %.2f\n name: %s\n",
s.integer, s.decimal, s.name);
u.integer = 1218;
printf("union data:\n integer: %d\n"
" decimal: %.2f\n name: %s\n",
u.integer, u.decimal, u.name);
}
Output:structure data:
integer: 18
decimal: 38.00
name: makandanmakan
union data:
integer: 18
decimal: 0.00
name: ?
sizeof structure: 28
sizeof union: 20
Accessing all members at a time: structure data:
integer: 183
decimal: 90.00
name: makandanmakan
union data:
integer: 1801807207
decimal: 277322871721159510000000000.00
name: makandanmakan
Accessing one member at a time:
structure data:
integer: 240
decimal: 120.000000
name: C programming
union data:
integer: 240
decimal: 120.000000
name: C programming
Altering a member value:
structure data:
integer: 1218
decimal: 120.00
name: C programming
union data:
integer: 1218
decimal: 0.00
name: ?
Catatan: Penggunaan struct adalah lebih baik daripada penggunaan union pada Bahasa C, karena ketika memori berbagi ruang penyimpanan yang sama, union memunculkan nilai ambiguitas yang lebih banyak daripada penggunaan struct.
- Layout Memori Bahasa C dan Penjelasannya
- Dealokasi Memori Bahasa C Tanpa Menggunakan free()
- Perbedaan malloc() dan calloc() Bahasa C
- Fungsi free() Bahasa C untuk Mengetahui Ukuran Memori yang Dealokasi
- Penggunaan realloc() Bahasa C dan Penjelasannya
- Kebocoran Memori Bahasa C dan Cara Mengatasinya
- Fungsi FSEEK dan REWIND Bahasa C dan Penjelasannya
5 komentar untuk "Perbedaan Antara Struct dan Union pada Bahasa C"
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 -
Apa berbedaan antara struct dan union pada bahasa pemrograman C?
BalasHapusStruct Bahasa C tidak memiliki loasi penyimpanan bersama untuk semua anggotanya, hal ini membuat ukuran struct menjadi lebih besar atau sama dengan jumlah ukuran anggota datanya.
HapusUnion tidak memiliki lokasi terpisah untuk setiap anggota datanya, sehingga memori yang digunakan jadi lebih sedikit daripada struct pada Bahsa C.
HapusKenapa lebih baik menggunakan union daripada struct pada bahasa C?
BalasHapusBaik struct ataupun union, keduanya merupakan tipa data yang dapat ditentukan oleh penggunakan, yang berfungsi untuk menampung banyak anggota data dari tipe data yang berbeda-beda. Struct digunakan ketika diperlukan proses penyimpanan nilai yang berbeda untuk semua anggota data pada lokasi memori yang bersifat unik atau berbeda, sementara union membantu untuk mengelola memori secara lebih efisien karena hanya menggunakan satu lokasi memori saja pada proses penyimpanan anggota datanya.
Hapus