Perbedaan antara struktur dan persatuan

Perbedaan antara struktur dan persatuan

Baik struktur dan persatuan adalah tipe data yang ditentukan pengguna dalam bahasa C dan secara konseptual sama, namun, mereka masih berbeda dalam beberapa hal seperti cara memori dialokasikan untuk anggota mereka. Mereka dinyatakan sama tetapi mereka berfungsi secara berbeda. Mereka memungkinkan pengguna untuk menggabungkan tipe data yang berbeda dengan satu nama. Sementara lokasi memori terpisah digunakan untuk setiap anggota saat mendeklarasikan variabel struktur, anggota yang berbeda dari variabel serikat berbagi lokasi memori yang sama. Mari kita pelajari perbedaan antara struktur dan persatuan adalah detail.

Apa itu struktur?

Struktur hanyalah tipe data yang ditentukan pengguna lainnya di C yang memungkinkan pengguna untuk menggabungkan tipe data dari berbagai jenis menjadi satu jenis dalam blok memori. Struktur dapat berisi tipe data sederhana dan kompleks yang terkait satu sama lain, yang sebaliknya, tidak masuk akal. Setiap anggota dalam suatu struktur mendapatkan lokasi memori sendiri sehingga dapat diakses dan diambil kapan saja.

Struktur digunakan ketika banyak data membutuhkan pengelompokan seperti direktori yang menyimpan informasi tentang banyak anggota dalam buku atau buku alamat yang menyimpan semua informasi tentang satu kontak - nama, alamat, nomor kontak, dan sebagainya. Alamat setiap anggota akan berada dalam urutan naik yang berarti memori setiap anggota akan mulai dari nilai offset yang berbeda. Mengubah nilai satu anggota tidak akan berpengaruh pada anggota lain.

Kata kunci 'struct' digunakan untuk mendefinisikan struktur tipe data yang berbeda di bawah satu nama. Misalnya, jika Anda ingin membuat database karyawan, Anda harus menyimpan nama karyawan, usia, telepon, dan detail gaji di bawah satu entitas. Ini dilakukan oleh kata kunci 'struct', yang kemudian memberi tahu kompiler bahwa struktur telah dinyatakan.

karyawan struct

nama string;

usia string;

telepon string;

gaji string;

emp1, emp2;

Di sini, 'karyawan' adalah nama struktur dan dua variabel 'Emp1' dan 'Emp2' dibuat dari tipe 'karyawan'. Kawat gigi penutup harus diikuti oleh titik koma (;).

Anggota suatu struktur dapat diakses oleh dua jenis operator:

  1. Operator anggota
  2. Operator Pointer Struktur

Apa itu persatuan?

Ini adalah tipe data khusus yang digunakan dalam C yang memungkinkan pengguna untuk menyimpan tipe data dari berbagai jenis di lokasi memori yang sama. Persatuan sangat mirip dengan struktur dan dapat ditentukan dengan mengganti kata kunci 'struct' dengan kata kunci 'serikat'. Anggota overlay ingatan satu sama lain di serikat pekerja dan cukup besar untuk menyesuaikan semua anggotanya.

Ketika variabel dikaitkan dengan Union, kompiler mengalokasikan memori dengan mempertimbangkan ukuran memori terbesar, sehingga ukuran serikat pekerja sama dengan ukuran anggota data terbesar. Persatuan dapat didefinisikan dengan banyak anggota, tetapi hanya satu anggota yang berisi nilai pada setiap contoh waktu tertentu.

Alamatnya sama untuk semua anggota serikat pekerja yang berarti setiap anggota dimulai pada nilai offset yang sama. Dan mengubah nilai satu anggota akan mempengaruhi nilai anggota lainnya. Persatuan dapat digunakan saat Anda ingin menyimpan sesuatu yang merupakan salah satu dari beberapa tipe data.

Karyawan Union

nama char [32];

usia int;

Gaji pelampung;

;

Di sini kata kunci 'Union' mendefinisikan serikat pekerja 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'.

Perbedaan antara struktur dan persatuan

1. Kata kunci

Kata kunci 'struct' digunakan untuk mendefinisikan struktur sedangkan kata kunci 'serikat' digunakan untuk mendefinisikan serikat pekerja.

2. Alokasi memori

Ruang memori terpisah dialokasikan untuk anggota dalam suatu struktur dan anggota memiliki alamat berbeda yang tidak berbagi memori. Union, di sisi lain, berbagi ruang memori yang sama untuk semua anggotanya sehingga lokasi memori bersama dialokasikan.

3. Akses anggota

Union menyimpan nilai tunggal pada satu waktu untuk semua anggotanya membuat aksesibilitas hanya satu anggota sekaligus. Sementara beberapa nilai dapat disimpan dalam struktur sehingga nilai anggota mana pun 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, saat berada di serikat pekerja, hanya anggota pertama yang dapat diinisialisasi dengan nilai jenisnya.

5. Nilai

Struktur dapat menyimpan nilai yang berbeda dari semua anggota dan mengubah nilai satu anggota tidak akan memiliki efek pada nilai -nilai anggota lain. Sementara serikat menyimpan nilai yang sama untuk semua anggotanya dan perubahan nilai satu anggota akan mempengaruhi nilai lainnya.

Struktur vs. Persatuan

Struktur Persatuan
Kata kunci struct digunakan untuk mendefinisikan struktur. Kata kunci serikat digunakan untuk mendefinisikan serikat pekerja.
Anggota tidak berbagi memori dalam suatu struktur. Anggota berbagi ruang memori di serikat pekerja.
Setiap anggota dapat diambil kapan saja dalam suatu struktur. Hanya satu anggota yang dapat diakses pada satu waktu di serikat pekerja.
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 yang lain. Perubahan nilai satu anggota akan memengaruhi nilai anggota lainnya.
Menyimpan nilai yang berbeda untuk semua anggota. Menyimpan nilai yang sama untuk semua anggota.

Ringkasan

  • Struktur dan persatuan adalah tipe data yang ditentukan pengguna di C yang secara fungsional dan konseptual sama namun sangat berbeda dalam beberapa hal.
  •  Keduanya berisi variabel tipe data yang berbeda tetapi mereka menggunakan sintaks yang sama untuk deklarasi variabel dan mengakses anggota. Sementara struktur didefinisikan oleh kata kunci 'struct', serikat yang ditentukan oleh kata kunci 'serikat'.
  • Setiap anggota mendapatkan lokasi memori yang terpisah dalam suatu struktur, sedangkan di serikat pekerja, ruang memori total setara dengan anggota ukuran terbesar. Semua anggota berbagi ruang memori yang sama di Union.
  • Setiap anggota dalam urutan apa pun dapat diakses dalam suatu struktur, sedangkan di serikat pekerja, hanya variabel yang dapat diakses nilainya baru -baru ini disimpan.