Perbezaan Antara Struktur dan Kesatuan Perbezaan Antara

Anonim

Kedua-duanya struktur dan kesatuan adalah jenis data yang ditentukan oleh pengguna dalam Bahasa C dan secara konseptual sama, bagaimanapun, mereka masih berbeza dalam beberapa cara seperti ingatan cara yang diperuntukkan kepada anggota mereka. Mereka diisytiharkan sama tetapi mereka berfungsi dengan berbeza. Mereka membenarkan pengguna menggabungkan jenis data yang berbeza di bawah satu nama. Walaupun lokasi memori berasingan digunakan untuk setiap ahli apabila mengisytiharkan pemboleh ubah struktur, anggota berbeza dari pembolehubah kesatuan berkongsi lokasi ingatan yang sama. Mari kita perhatikan perbezaan antara struktur dan kesatuan adalah terperinci.

Apakah Struktur?

Struktur hanya jenis data yang ditentukan oleh pengguna dalam C yang membolehkan pengguna menggabungkan jenis data jenis yang berbeza ke dalam satu jenis dalam blok ingatan. Struktur boleh mengandungi kedua-dua jenis data mudah dan rumit yang berkaitan dengan satu sama lain, yang sebaliknya, tidak masuk akal. Setiap ahli dalam struktur mendapatkan lokasi ingatannya sendiri supaya ia dapat diakses dan diperoleh pada bila-bila masa.

Struktur digunakan apabila banyak data memerlukan pengelompokan seperti direktori yang menyimpan maklumat tentang banyak ahli dalam buku atau buku alamat yang menyimpan semua maklumat mengenai satu kenalan - nama, alamat, nombor kenalan, dan sebagainya. Alamat setiap anggota akan berada dalam urutan menaik yang bermaksud ingatan setiap ahli akan bermula pada nilai-nilai offset yang berbeza. Mengubah nilai satu ahli tidak akan memberi kesan kepada ahli-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 compiler bahawa struktur telah diumumkan.

struct employee {

name string;

umur rentetan; Telefon bimbit

; Gaji

;

} emp1, emp2;

Di sini, 'pekerja' adalah nama struktur dan dua pembolehubah 'emp1' dan 'emp2' dicipta daripada 'pekerja' jenis. Pendakap penutup mesti diikuti dengan titik koma (;).

Ahli-ahli struktur boleh diakses oleh dua jenis pengendali:

  1. Pengendali anggota
  2. Operator penunjuk struktur

Apa itu Union?

Ini adalah jenis data khas yang digunakan dalam C yang membolehkan pengguna menyimpan jenis data dari pelbagai jenis dalam lokasi memori yang sama. Kesatuan agak serupa dengan struktur dan dapat ditakrifkan dengan menggantikan kata kunci 'struct' dengan kata kunci 'kesatuan'. Ahli-ahli melapisi kenangan satu sama lain dalam kesatuan dan ia cukup besar untuk memenuhi semua anggotanya.

Apabila pembolehubah dikaitkan dengan kesatuan, pengkompil mengagihkan memori dengan mempertimbangkan saiz memori terbesar, jadi ukuran kesatuan adalah sama dengan saiz ahli data terbesar.Kesatuan boleh didefinisikan dengan banyak ahli, tetapi hanya satu ahli yang mengandungi nilai pada setiap masa tertentu.

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

pekerja kesatuan {

nama char [32];

umur int;

gaji terapung;

};

Di sini kata kunci 'kesatuan' mendefinisikan kesatuan yang sama dengan pernyataan struktur. Pembolehubah sama ada boleh menyimpan nilai rentetan yang merupakan 'nama pekerja', nilai integer yang merupakan 'umur pekerja', atau terapung yang mewakili 'gaji pekerja'.

Perbezaan Antara Struktur dan Kesatuan

1. Kata Kunci

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

2. Peruntukan Memori

Ruang memori berasingan dipisahkan 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 yang dikongsi diperuntukkan.

3. Akses Anggota

Kesatuan menyimpan satu nilai pada satu masa untuk semua anggotanya membuat akses kepada hanya satu ahli pada satu masa. Walaupun pelbagai nilai boleh disimpan dalam struktur supaya nilai ahli boleh diakses dan diperoleh pada bila-bila masa.

4. Ukuran

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

5. Inisialisasi

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

5. Nilai

Struktur boleh menyimpan nilai yang berbeza dari semua ahli dan perubahan dalam nilai satu ahli tidak akan mempunyai kesan ke atas nilai ahli-ahli lain. Walaupun kesatuan menyimpan nilai yang sama untuk semua anggotanya dan perubahan nilai satu ahli akan mempengaruhi nilai yang lain.

Struktur vs Kesatuan

Struktur Kesatuan
Struktur kata kunci digunakan untuk menentukan struktur. Kata kunci Union digunakan untuk menentukan kesatuan.
Ahli tidak berkongsi memori dalam struktur. Ahli berkongsi ruang memori dalam kesatuan.
Mana-mana ahli boleh diambil pada bila-bila masa dalam struktur. Hanya satu ahli boleh diakses pada satu masa dalam kesatuan.
Beberapa ahli struktur boleh dimulakan sekali gus. Hanya ahli pertama yang boleh diinisialisasikan.
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. Tukar nilai seorang ahli akan mempengaruhi 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 pengguna dalam C yang secara fungsional dan konseptual sama tetapi agak berbeza dalam beberapa cara.
  • Kedua-duanya mengandungi pembolehubah jenis data yang berbeza tetapi mereka menggunakan sintaks yang sama untuk deklarasi pembolehubah dan mengakses ahli. Walaupun struktur ditakrifkan oleh kata kunci 'struct', kesatuan ditakrifkan oleh kata kunci 'kesatuan'.
  • Setiap ahli mendapat lokasi ingatan berasingan dalam struktur, sedangkan dalam kesatuan, jumlah ruang memori bersamaan dengan jumlah 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 pembolehubah itu boleh diakses nilai yang disimpan baru-baru ini.