Yapı ve Birlik Arasındaki Fark Fark

Anonim

gibi bazı yönlerden farklıdırlar. yapı ve birleştirme, C Dilinde kullanıcı tanımlı veri türleridir ve kavramsal olarak aynıdır, ancak yine de, bazı yollarla belleklerin üyelerine nasıl ayrıldığı gibi hala farklıdırlar. Benzer şekilde beyan edilirler, ancak farklı işlev görürler. Kullanıcıya farklı veri türlerini tek bir ad altında birleştirmelerine izin verilir. Yapı değişkenlerini bildirirken ayrı bellek konumu her üye için kullanılırken, birleşim değişkeninin farklı üyeleri aynı bellek konumunu paylaşır. Şimdi yapı ve birlik arasındaki farkı inceleyelim.

Yapı Nedir?

Bir yapı, kullanıcıya farklı türdeki veri türlerini bir bellek bloğunda tek bir türde birleştiren bir diğer kullanıcı tanımlı veri türüdür. Bir yapı, birbiri ile ilgili basit ve karmaşık veri tiplerini içerebilir, aksi halde mantıklı olmayacaktır. Bir yapı içindeki her üye, kendi bellek konumunu alır, böylece istediğiniz zaman erişilebilir ve alınabilir.

Bir yapı çok sayıda veri, bir kitapta birçok üye hakkında bilgi depolayan bir dizin gibi gruplandırmaya ihtiyaç duyulduğunda veya tek bir kişi hakkındaki tüm bilgileri depolayan bir adres defterinde kullanılırsa - ad, adres, iletişim numarası ve benzeri. Her üyesinin adresi artan düzende olacak ve bu da her üyenin hafızasının farklı ofset değerlerinde başlayacağı anlamına geliyor. Bir üyenin değerini değiştirmek diğer üyeler üzerinde herhangi bir etki yaratmaz.

Bir 'struct' anahtar kelimesi, tek bir isim altında farklı veri türlerinin bir yapısını tanımlamak için kullanılır. Örneğin, bir çalışan veritabanı oluşturmak istiyorsanız, çalışanların adını, yaşını, telefonunu ve maaş ayrıntılarını tek bir varlık altında depolamanız gerekir. Bu, derleyiciye bir yapının bildirildiğini söyleyen 'struct' anahtar sözcüğüyle yapılır.

struct employee {

dize adı;

dize yaş;

dize telefon;

string maaş;

} emp1, emp2;

Burada, 'çalışan', yapının adıdır ve iki değişken 'emp1' ve 'emp2', 'çalışan' türünün yaratılmıştır. Kapanış parantezinin arkasında noktalı virgül (;) bulunmalıdır.

Bir yapının üyelerine iki tür operatör erişebilir:

  1. Üye operatör
  2. Yapı göstericisi operatör

Birlik nedir?

C'de kullanılan, kullanıcıya farklı türdeki veri türlerini aynı bellek alanında saklamanızı sağlayan özel bir veri türüdür. Bir birlik bir yapıya oldukça benzer ve 'yapı' anahtar kelimesini 'birlik' anahtar kelimesiyle değiştirerek tanımlanabilir. Üyeler, birbirlerinin anılarını bir araya getirirler ve tüm üyelerine uyacak kadar büyüktürler.

Bir değişken birleşimle ilişkilendirildiğinde, derleyici en büyük bellek boyutunu dikkate alarak belleği tahsis eder, bu nedenle bir birlik boyutu en büyük veri üyesinin boyutuna eşittir.Bir birlik birçok üyeyle tanımlanabilir; ancak yalnızca bir üye, herhangi bir zaman örneğinde değeri içerir.

Adres, her üyenin aynı ofset değerinde başlaması anlamına gelen bir birliğin tüm üyeleri için aynıdır. Ve bir üyenin değerini değiştirmek diğer üyelerin değerlerini etkiler. Birlik, birkaç veri türünden birisini saklamak istediğinizde kullanılabilir.

sendika çalışanı {

karakter adı [32];

yaş;

float maaş;

};

Burada 'birlik' anahtar kelimesi, yapının bildirimine oldukça benzeyen birliği tanımlar. Değişken, 'çalışanın adı' olan bir dize değeri, 'çalışanın yaşı' olan bir tamsayı değer veya 'çalışanın maaşını' temsil eden bir şamandıra depolayabilir.

Yapı ve Birlik Arasındaki Fark

1. Anahtar Kelime

'yapı' anahtar kelimesi bir yapı tanımlamak için kullanılırken 'birlik' anahtar kelimesi bir birliği tanımlamak için kullanılır.

2. Bellek Ayırma

Ayrı bellek alanı, bir yapı içindeki üyeler için ayrılır ve üyeler, bellek paylaşmayan farklı adreslere sahiptir. Öte yandan bir birlik, paylaşılan bellek konumu tahsis edilmek üzere tüm üyeleri için aynı bellek alanını paylaşır.

3. Üye Erişimi

Birlik, tüm üyeleri için tek seferde yalnızca bir üyeye erişebilen tek bir değeri depolar. Bir yapıda birden çok değer saklanabilirken, herhangi bir üye değerine istediğiniz zaman erişilebilir ve alınabilir.

4. Boyut

Bir yapı boyutu, bir üyenin boyutunun toplamına eşittir, oysa bir birliğin boyutu en büyük üye boyutuna eşittir.

5. Başlatma

Bir yapıda, birden fazla üye derhal başlatılabilirken, bir birlikte sadece ilk üyenin türü değeri ile başlatılabilir.

5. Değer

Bir yapı tüm üyelerin farklı değerlerini saklayabilir ve bir üyenin değerindeki değişiklikler diğer üyelerin değerleri üzerinde herhangi bir etkisi olmayacaktır. Birlik bütün üyeleri için aynı değeri depolar ve bir üyenin değeri değişirse diğerinin değeri etkilenir.

Yapı ve Birlik

Yapı Birlik
Yapı sözcük grubu bir yapı tanımlamak için kullanılır. Union anahtar sözcüğü bir birliği tanımlamak için kullanılır.
Üyeler bir yapıda bellek paylaşmazlar. Üyeler birlik içinde bellek alanını paylaşıyor.
Herhangi bir üye bir yapıda istediğiniz zaman alınabilir. Birlikte yalnızca bir üyeye erişilebilir.
Bir yapının birkaç üyesi aynı anda başlatılabilir. Sadece ilk üye başlatılabilir.
Yapının büyüklüğü, her üyenin boyutunun toplamına eşittir. Birliğin büyüklüğü, en büyük üyenin boyutuna eşittir.
Bir üyenin değerinin değiştirilmesi, diğerinin değerini etkilemez. Bir üyenin değer değişikliği diğer üye değerlerini etkiler.
Tüm üyeler için farklı değerler saklar. Tüm üyeler için aynı değeri depolar.

Özet

  • Hem yapısal hem de birlik, işlevsel ve kavramsal olarak aynı olan, ancak bazı açılardan oldukça farklı olan, C'deki kullanıcı tanımlı veri türleridir.
  • Her ikisi de farklı veri türlerinin değişkenlerini içerir ancak değişkenlerin bildirimi ve üyelere erişmek için aynı sözdizimini kullanırlar. Bir yapı 'struct' anahtar sözcüğü tarafından tanımlanırken, bir birlik 'union' anahtar sözcüğü tarafından tanımlanır.
  • Her bir üye bir yapıda ayrı bir bellek yeri alırken, bir birlikte toplam bellek alanı en büyük boyut üyesine eşdeğerdir. Bütün üyeler aynı bellek alanını bir birlikteyken paylaşıyorlar.
  • Herhangi bir dizideki herhangi bir üyeye bir yapıda erişilebilirken, bir birlikte yalnızca değeri yakın bir tarihte saklanan değişkene erişilebilir.