Perbandingan Struct dan Union dalam Bahasa C untuk Pemula

Layar komputer menampilkan kode struct dan union dalam bahasa C

Struct dan union sama-sama mengelompokkan beberapa variabel, tetapi cara mereka menyimpan data di memori berbeda. Struct memberi setiap anggota ruang sendiri, sedangkan union memakai satu ruang untuk semua anggota. Perbedaan ini menentukan kapan sebaiknya pakai struct dan kapan pakai union.

Apa Itu Struct?

Struct adalah tipe data turunan yang memungkinkan kamu menyatukan beberapa variabel dengan tipe berbeda ke dalam satu nama. Setiap anggota struct punya alamat memori sendiri, jadi kamu bisa mengisi semua anggota secara bersamaan tanpa saling mengganggu.

Contoh sederhana:

struct Mahasiswa {
    char nama[50];
    int umur;
    float ipk;
};

Ukuran struct adalah jumlah ukuran semua anggotanya (plus padding untuk alignment). Kamu bisa mengakses setiap anggota kapan saja.

Apa Itu Union?

Union juga mengelompokkan beberapa variabel, tetapi semua anggota union menempati alamat memori yang sama. Ukuran union sama dengan ukuran anggota terbesarnya. Artinya, kamu hanya bisa menggunakan satu anggota pada satu waktu; mengisi anggota lain akan menimpa nilai sebelumnya.

Contoh:

union Nilai {
    int bulat;
    float desimal;
    char huruf;
};

Union berguna ketika kamu ingin menyimpan tipe data berbeda di ruang yang sama, misalnya untuk menghemat memori atau membuat variabel yang bisa berubah tipe.

Perbandingan Struct dan Union

Alokasi Memori

Struct mengalokasikan memori untuk setiap anggota secara terpisah. Union hanya mengalokasikan memori sebesar anggota terbesar. Union lebih hemat memori, tetapi kamu kehilangan kemampuan menyimpan banyak nilai sekaligus.

Cara Akses

Pada struct, semua anggota bisa diakses dan diubah kapan saja. Pada union, hanya anggota terakhir yang diisi yang nilainya valid. Mengakses anggota lain setelahnya akan menghasilkan interpretasi yang tidak terdefinisi.

Kegunaan Umum

Struct dipakai untuk merepresentasikan objek dunia nyata seperti data mahasiswa, titik koordinat, atau konfigurasi. Union lebih cocok untuk situasi di mana suatu nilai bisa memiliki beberapa tipe, seperti dalam implementasi variant atau untuk menghemat memori pada sistem terbatas.

Contoh Kode: Struct vs Union

Program sederhana berikut menunjukkan perbedaan perilakunya.

#include <stdio.h>

struct DataStruct {
    int a;
    float b;
};

union DataUnion {
    int a;
    float b;
};

int main() {
    struct DataStruct s;
    s.a = 10;
    s.b = 3.14;
    printf("Struct: a=%d, b=%.2fn", s.a, s.b); // a=10, b=3.14

    union DataUnion u;
    u.a = 10;
    u.b = 3.14;
    printf("Union: a=%d, b=%.2fn", u.a, u.b); // a tidak valid, b=3.14
    return 0;
}

Pada union, setelah mengisi u.b, nilai u.a menjadi tidak berarti karena memori yang sama ditafsirkan sebagai float.

Kapan Memilih Struct atau Union?

Pilih struct ketika kamu perlu menyimpan beberapa nilai secara bersamaan dan mengaksesnya kapan saja. Pilih union ketika kamu ingin menghemat memori dan hanya satu nilai yang aktif pada satu waktu, atau ketika membuat tipe data yang bisa berubah-ubah.

Union juga sering dipakai dalam pemrograman tingkat rendah, misalnya untuk mengakses representasi bit dari suatu nilai. Untuk pemula, struct lebih aman dan mudah dipahami.

Kesalahan Umum saat Menggunakan Union

  • Mengisi dua anggota union secara berurutan lalu berharap keduanya menyimpan nilai.
  • Mengakses anggota union yang tidak terakhir diisi tanpa memahami representasi memori.
  • Mengira union bisa menggantikan struct untuk menyimpan data kompleks.

Jika kamu baru belajar C, mulailah dengan struct. Setelah paham pointer dan manajemen memori, kamu bisa bereksperimen dengan union. Untuk memperdalam pemahaman tentang pointer, baca Memahami Pointer dalam Bahasa C: Alamat Memori dan Penggunaannya.

Ringkasan

Struct dan union punya cara kerja memori yang berbeda. Struct menyimpan setiap anggota di lokasi terpisah, sedangkan union menumpuk semua anggota di satu lokasi. Pilih struct untuk data yang perlu diakses bersamaan, dan union untuk hemat memori dengan satu nilai aktif. Latihan dengan contoh kecil akan membantu kamu memahami keduanya.

Pertanyaan yang Sering Diajukan

Apakah union bisa menyimpan banyak nilai sekaligus?

Tidak. Union hanya menyimpan satu nilai pada satu waktu. Mengisi anggota baru akan menimpa nilai sebelumnya.

Kapan sebaiknya menggunakan union daripada struct?

Saat kamu ingin menghemat memori dan hanya perlu satu nilai aktif, atau saat membuat tipe data yang bisa berubah tipe seperti variant.

Apakah ukuran union selalu sama dengan anggota terbesar?

Ya, ukuran union ditentukan oleh anggota terbesar, tetapi bisa ada padding untuk alignment.