Perbezaan antara struktur dan kesatuan

Perbezaan antara struktur dan kesatuan

Kedua-dua struktur dan kesatuan adalah jenis data yang ditentukan pengguna dalam bahasa C dan secara konseptual sama, bagaimanapun, mereka masih berbeza dalam beberapa cara seperti ingatan cara diperuntukkan kepada ahli mereka. Mereka diisytiharkan sama tetapi mereka berfungsi dengan cara yang berbeza. Mereka membenarkan pengguna menggabungkan jenis data yang berbeza di bawah satu nama. Walaupun lokasi memori yang berasingan digunakan untuk setiap ahli semasa mengisytiharkan pembolehubah struktur, ahli yang berbeza dari pembolehubah kesatuan berkongsi lokasi memori yang sama. Mari kita mengkaji perbezaan antara struktur dan kesatuan adalah perincian.

Apa itu struktur?

Struktur hanyalah satu lagi jenis data yang ditentukan pengguna dalam C yang membolehkan pengguna menggabungkan jenis data yang berbeza ke dalam satu jenis dalam blok memori. Struktur boleh mengandungi jenis data yang mudah dan kompleks yang berkaitan dengan satu sama lain, yang sebaliknya, tidak akan masuk akal. Setiap ahli dalam struktur mendapat lokasi memori sendiri supaya ia dapat diakses dan diambil pada bila -bila masa.

Struktur digunakan apabila banyak data memerlukan pengumpulan seperti direktori yang menyimpan maklumat mengenai banyak ahli dalam buku atau buku alamat yang menyimpan semua maklumat mengenai satu kenalan - nama, alamat, nombor hubungan, dan sebagainya. Alamat setiap ahli akan berada dalam urutan menaik yang bermaksud ingatan setiap ahli akan bermula pada nilai offset yang berbeza. Mengubah nilai satu ahli tidak akan memberi kesan kepada ahli lain.

Kata kunci 'struct' digunakan untuk menentukan struktur jenis data yang berbeza di bawah satu nama. Sebagai contoh, jika anda ingin membuat pangkalan data pekerja, anda perlu menyimpan nama pekerja, umur, telefon, dan butiran gaji di bawah entiti tunggal. Ini dilakukan oleh kata kunci 'struct', yang kemudian memberitahu pengkompil bahawa struktur telah diisytiharkan.

Struktur Pekerja

nama rentetan;

Umur rentetan;

Telefon String;

gaji rentetan;

EMP1, EMP2;

Di sini, 'Pekerja' adalah nama struktur dan dua pembolehubah 'EMP1' dan 'EMP2' dicipta dari 'Pekerja' jenis '. Pendakap penutup mesti diikuti oleh titik koma (;).

Ahli -ahli struktur boleh diakses oleh dua jenis pengendali:

  1. Pengendali ahli
  2. Pengendali penunjuk struktur

Apa itu Kesatuan?

Ini jenis data khas yang digunakan dalam c yang membolehkan pengguna menyimpan jenis data yang berbeza di lokasi memori yang sama. Kesatuan agak serupa dengan struktur dan ia boleh ditakrifkan dengan menggantikan kata kunci 'struct' dengan kata kunci 'kesatuan'. Ahli -ahli menghapuskan ingatan antara satu sama lain dalam kesatuan dan cukup besar untuk menyesuaikan semua anggotanya.

Apabila pemboleh ubah dikaitkan dengan kesatuan, pengkompil memperuntukkan memori dengan mempertimbangkan saiz memori terbesar, jadi saiz kesatuan adalah sama dengan saiz ahli data terbesar. Kesatuan boleh ditakrifkan dengan banyak ahli, tetapi hanya satu ahli yang mengandungi nilai pada mana -mana contoh masa yang diberikan.

Alamatnya sama untuk semua ahli kesatuan yang bermaksud setiap ahli bermula pada nilai offset yang sama. Dan mengubah nilai satu ahli akan menjejaskan nilai ahli lain. Kesatuan boleh digunakan apabila anda ingin menyimpan sesuatu yang merupakan salah satu daripada beberapa jenis data.

pekerja kesatuan

Nama Char [32];

int umur;

gaji terapung;

;

Di sini kata kunci 'kesatuan' mentakrifkan kesatuan yang hampir sama dengan perisytiharan struktur. Pembolehubah boleh menyimpan nilai rentetan yang 'nama pekerja', nilai integer yang merupakan 'umur pekerja', atau apungan yang mewakili 'gaji pekerja'.

Perbezaan antara struktur dan kesatuan

1. Kata kunci

Kata kunci 'struct' digunakan untuk menentukan struktur sedangkan kata kunci 'kesatuan' digunakan untuk menentukan kesatuan.

2. Peruntukan memori

Ruang ingatan berasingan diperuntukkan untuk ahli dalam struktur dan ahli mempunyai alamat yang berbeza yang tidak berkongsi ingatan. Kesatuan, sebaliknya, berkongsi ruang ingatan yang sama untuk semua anggotanya sehingga lokasi memori bersama diperuntukkan.

3. Akses Ahli

Kesatuan menyimpan satu nilai pada satu masa untuk semua ahli -ahlinya membuat kebolehaksesan kepada hanya satu ahli pada satu masa. Walaupun pelbagai nilai boleh disimpan dalam struktur supaya sebarang nilai ahli dapat diakses dan diambil pada bila -bila masa.

4. Saiz

Saiz struktur adalah sama dengan jumlah saiz semua ahli atau lebih, sedangkan saiz kesatuan adalah sama dengan saiz ahli saiz terbesar.

5. Permulaan

Dalam struktur, beberapa ahli boleh dimulakan sekaligus, sementara dalam kesatuan, hanya ahli pertama yang dapat dimulakan dengan nilai jenisnya.

5. Nilai

Struktur boleh menyimpan nilai yang berbeza dari semua ahli dan perubahan nilai satu ahli tidak akan memberi kesan kepada nilai -nilai ahli lain. Walaupun kesatuan menyimpan nilai yang sama untuk semua ahli dan perubahan nilai satu ahli akan mempengaruhi nilai yang lain.

Struktur vs. Kesatuan

Struktur Kesatuan
Kata kunci struct digunakan untuk menentukan struktur. Kata kunci kesatuan digunakan untuk menentukan kesatuan.
Ahli tidak berkongsi ingatan dalam struktur. Ahli berkongsi ruang memori dalam kesatuan.
Mana -mana ahli boleh diambil pada bila -bila masa dalam struktur. Hanya satu ahli yang boleh diakses pada satu masa dalam kesatuan.
Beberapa ahli struktur boleh dimulakan sekaligus. Hanya ahli pertama yang dapat dimulakan.
Saiz struktur adalah sama dengan jumlah saiz setiap ahli. Saiz kesatuan adalah sama dengan saiz ahli terbesar.
Mengubah nilai satu ahli tidak akan menjejaskan nilai yang lain. Perubahan nilai satu ahli akan menjejaskan nilai ahli lain.
Menyimpan nilai yang berbeza untuk semua ahli. Menyimpan nilai yang sama untuk semua ahli.

Ringkasan

  • Kedua-dua struktur dan kesatuan adalah jenis data yang ditentukan oleh pengguna dalam C yang berfungsi secara fungsional dan konseptual namun agak berbeza dalam beberapa cara.
  •  Kedua -duanya mengandungi pembolehubah jenis data yang berbeza tetapi mereka menggunakan sintaks yang sama untuk pengisytiharan pembolehubah dan mengakses ahli. Walaupun struktur ditakrifkan oleh kata kunci 'struct', kesatuan ditakrifkan oleh kata kunci 'kesatuan'.
  • Setiap ahli mendapat lokasi memori yang berasingan dalam struktur, sedangkan dalam kesatuan, jumlah ruang memori bersamaan dengan ahli saiz terbesar. Semua ahli berkongsi ruang ingatan yang sama dalam kesatuan.
  • Mana -mana ahli dalam mana -mana urutan boleh diakses dalam struktur, sedangkan dalam kesatuan, hanya pemboleh ubah yang dapat diakses nilai yang baru -baru ini disimpan.