Baik struktur dan gabungannya adalah tipe data yang ditentukan pengguna dalam Bahasa C dan secara konseptual sama, namun, keduanya masih berbeda dalam beberapa hal seperti cara memori dialokasikan untuk anggota mereka. Mereka dideklarasikan sama tetapi fungsinya berbeda. Mereka memungkinkan pengguna untuk menggabungkan berbagai tipe data dengan satu nama. Sementara lokasi memori yang terpisah digunakan untuk setiap anggota ketika mendeklarasikan variabel struktur, anggota yang berbeda dari variabel gabungan berbagi lokasi memori yang sama. Mari kita pelajari perbedaan antara struktur dan kesatuan secara detail.
Struktur hanyalah tipe data yang ditentukan pengguna dalam C yang memungkinkan pengguna untuk menggabungkan tipe data dari berbagai jenis menjadi satu tipe dalam satu blok memori. Struktur dapat berisi tipe data sederhana dan kompleks yang terkait satu sama lain, yang jika tidak, tidak masuk akal. Setiap anggota dalam suatu struktur mendapatkan lokasi memorinya sendiri sehingga dapat diakses dan diambil kapan saja.
Struktur digunakan ketika banyak data perlu dikelompokkan seperti direktori yang menyimpan informasi tentang banyak anggota dalam buku atau buku alamat yang menyimpan semua informasi tentang satu nama kontak, alamat, nomor kontak, dan sebagainya. Alamat masing-masing anggota akan dalam urutan naik yang berarti memori setiap anggota akan mulai pada nilai offset yang berbeda. Mengubah nilai satu anggota tidak akan berpengaruh pada anggota lainnya.
Kata kunci 'struct' digunakan untuk menentukan struktur tipe data yang berbeda dengan satu nama. Misalnya, jika Anda ingin membuat database karyawan, Anda harus menyimpan nama, usia, telepon, dan rincian gaji karyawan di bawah satu kesatuan. Ini dilakukan oleh kata kunci 'struct', yang kemudian memberi tahu kompiler bahwa suatu struktur telah dinyatakan.
karyawan struct
nama string;
usia senar;
telepon tali;
gaji pokok;
emp1, emp2;
Di sini, 'karyawan' adalah nama struktur dan dua variabel 'emp1' dan 'emp2' dibuat dari tipe 'karyawan'. Kawat gigi penutup harus diikuti dengan tanda titik koma (;).
Anggota struktur dapat diakses oleh dua jenis operator:
Ini adalah tipe data khusus yang digunakan dalam C yang memungkinkan pengguna untuk menyimpan tipe data dari berbagai jenis di lokasi memori yang sama. Serikat pekerja sangat mirip dengan struktur dan dapat didefinisikan dengan mengganti kata kunci 'struct' dengan kata kunci 'serikat pekerja'. Anggota overlay memori satu sama lain dalam satu kesatuan dan itu cukup besar untuk memenuhi semua anggotanya.
Ketika variabel dikaitkan dengan penyatuan, kompiler mengalokasikan memori dengan mempertimbangkan ukuran memori terbesar, sehingga ukuran penyatuan sama dengan ukuran anggota data terbesar. Serikat pekerja dapat didefinisikan dengan banyak anggota, tetapi hanya satu anggota yang mengandung nilai pada waktu tertentu.
Alamatnya sama untuk semua anggota serikat yang artinya setiap anggota mulai dengan nilai offset yang sama. Dan mengubah nilai satu anggota akan mempengaruhi nilai anggota lainnya. Serikat pekerja dapat digunakan ketika Anda ingin menyimpan sesuatu yang merupakan salah satu dari beberapa tipe data.
karyawan serikat
nama char [32];
usia int;
gaji mengambang;
;
Di sini kata kunci 'gabungan' mendefinisikan serikat yang sangat mirip dengan deklarasi struktur. Variabel dapat menyimpan nilai string yang merupakan 'nama karyawan', nilai integer yang merupakan 'usia karyawan', atau pelampung yang mewakili 'gaji karyawan'.
1. Kata kunci
Kata kunci 'struct' digunakan untuk mendefinisikan suatu struktur sedangkan kata kunci 'gabungan' digunakan untuk mendefinisikan suatu kesatuan.
2. Alokasi Memori
Ruang memori terpisah dialokasikan untuk anggota dalam struktur dan anggota memiliki alamat berbeda yang tidak berbagi memori. Serikat pekerja, di sisi lain, berbagi ruang memori yang sama untuk semua anggotanya sehingga lokasi memori bersama dialokasikan.
3. Akses Anggota
Serikat pekerja menyimpan nilai tunggal pada satu waktu untuk semua anggotanya membuat aksesibilitas hanya untuk satu anggota pada suatu waktu. Sementara beberapa nilai dapat disimpan dalam suatu struktur sehingga setiap nilai anggota dapat diakses dan diambil kapan saja.
4. Ukuran
Ukuran struktur sama dengan jumlah ukuran semua anggota atau lebih, sedangkan ukuran serikat sama dengan ukuran anggota ukuran terbesar..
5. Inisialisasi
Dalam suatu struktur, beberapa anggota dapat diinisialisasi sekaligus, sementara dalam serikat pekerja, hanya anggota pertama yang dapat diinisialisasi dengan nilai tipenya..
5. Nilai
Struktur dapat menyimpan nilai yang berbeda dari semua anggota dan perubahan nilai satu anggota tidak akan berpengaruh pada nilai anggota lainnya. Sementara serikat menyimpan nilai yang sama untuk semua anggotanya dan perubahan nilai satu anggota akan mempengaruhi nilai lainnya.
Struktur | Persatuan |
Kata kunci Struct digunakan untuk mendefinisikan struktur. | Kata kunci gabungan digunakan untuk menentukan gabungan. |
Anggota tidak berbagi memori dalam suatu struktur. | Anggota berbagi ruang memori dalam satu kesatuan. |
Setiap anggota dapat diambil kapan saja dalam suatu struktur. | Hanya satu anggota yang dapat diakses pada satu waktu dalam serikat. |
Beberapa anggota struktur dapat diinisialisasi sekaligus. | Hanya anggota pertama yang dapat diinisialisasi. |
Ukuran struktur sama dengan jumlah ukuran masing-masing anggota. | Ukuran serikat sama dengan ukuran anggota terbesar. |
Mengubah nilai satu anggota tidak akan mempengaruhi nilai anggota lainnya. | Perubahan nilai satu anggota akan mempengaruhi nilai anggota lainnya. |
Menyimpan nilai yang berbeda untuk semua anggota. | Menyimpan nilai yang sama untuk semua anggota. |