Lompat ke konten Lompat ke sidebar Lompat ke footer

Perbedaan Antara Struct dan Union pada Bahasa C

Pada artikel ini akan dijelaskan perbedaan antara Struct dan Union Pada Bahasa C beserta contohnya.

Perbedaan Antara Struct dan Union pada Bahasa C
Perbedaan Antara Struct dan Union 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 [klik], Bit Fields Bahasa C Beserta Penjelasannya [klik], dan Operasi Pada Variabel Struct Bahasa C [klik].

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.

Pendefinisian Sebuah Struct: Untuk mendefinisikan sebuah struct, maka digunakan suatu statement struct pada bahasa C. Statement struct tersebut mendefinisikan sebuah tipe data baru dengan lebih dari atau sama terhadap suatu anggota. Format dari statement struct adalah sebagai berikut:

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.

Baca Juga:

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.


Artikel ini didedikasikan kepada: Erlinda Suastika Dewi, Faizal Rifqi Pujaka, Fanny Raka Satria, Febrian Calvin Valintino, dan Hidayatul Mukharomah.

5 komentar untuk "Perbedaan Antara Struct dan Union pada Bahasa C"

  1. Apa berbedaan antara struct dan union pada bahasa pemrograman C?

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

      Hapus
    2. Union tidak memiliki lokasi terpisah untuk setiap anggota datanya, sehingga memori yang digunakan jadi lebih sedikit daripada struct pada Bahsa C.

      Hapus
  2. Kenapa lebih baik menggunakan union daripada struct pada bahasa C?

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

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 -