Hem yapı hem de birleşim C Dili'nde kullanıcı tanımlı veri türleridir ve kavramsal olarak aynıdır, ancak yine de belleğin üyelerine tahsis edilme şekli gibi bazı yönlerden farklıdırlar. Benzer şekilde ilan edilirler fakat farklı işlev görürler. Kullanıcının farklı veri türlerini tek bir ad altında birleştirmesine izin verir. Yapı değişkenleri bildirilirken her üye için ayrı bellek konumu kullanılırken, birleşim değişkeninin farklı üyeleri aynı bellek konumunu paylaşır. Yapı ve birlik arasındaki farkı ayrıntılandıralım.
Bir yapı, kullanıcının farklı türdeki veri türlerini bir bellek bloğunda tek bir türde birleştirmesine izin veren, C'deki kullanıcı tanımlı başka bir veri türüdür. Bir yapı, birbiriyle ilişkili hem basit hem de karmaşık veri türlerini içerebilir, aksi takdirde anlamlı olmaz. Bir yapıdaki her üye, istediği zaman erişilebilmesi ve alınabilmesi için kendi bellek konumunu alır.
Bir yapı, bir kitapta birçok üye hakkındaki bilgileri depolayan bir dizin veya tek bir kişi hakkındaki tüm bilgileri (ad, adres, kişi numarası vb.) Depolayan bir adres defteri gibi gruplandırılması gerektiğinde kullanılır. Her üyenin adresi artan sırada olacak, yani her üyenin belleği farklı ofset değerlerinde başlayacaktır. Bir üyenin değerini değiştirmenin diğer üyeler üzerinde herhangi bir etkisi olmaz.
'Struct' anahtar sözcüğü, tek bir ad altında farklı veri türlerinin yapısını tanımlamak için kullanılır. Örneğin, bir çalışan veritabanı oluşturmak istiyorsanız, çalışanın adını, yaşını, telefonunu ve maaş ayrıntılarını tek bir varlık altında saklamanız gerekir. Bu, daha sonra derleyiciye bir yapının bildirildiğini söyleyen 'struct' anahtar sözcüğü ile yapılır..
yapı çalışanı
dize adı;
string age;
telli telefon;
ip maaşı;
emp1, emp2;
Burada 'çalışan' yapının adıdır ve 'çalışan' türünde iki 'emp1' ve 'emp2' değişkenleri oluşturulur. Kapanış parantezlerini noktalı virgül (;) izlemelidir..
Bir yapının üyelerine iki tür operatör tarafından erişilebilir:
C'de kullanılan ve kullanıcının farklı türde veri türlerini aynı bellek konumunda saklamasını sağlayan özel bir veri türüdür. Birlik bir yapıya oldukça benzerdir ve 'struct' anahtar kelimesi 'union' anahtar kelimesi ile değiştirilerek tanımlanabilir. Üyeler bir birlik içinde birbirlerinin anısını kaplar ve tüm üyelerine uyacak kadar büyüktür.
Bir değişken birleşmeyle ilişkilendirildiğinde, derleyici belleği en büyük belleğin boyutunu dikkate alarak ayırır, böylece birleşimin boyutu en büyük veri üyesinin boyutuna eşit olur. Birlik birçok üyeyle tanımlanabilir, ancak belirli bir zamanda yalnızca bir üye değeri içerir.
Adres, bir birliğin tüm üyeleri için aynıdır, yani her üye aynı ofset değerinde başlar. Ve bir üyenin değerini değiştirmek diğer üyelerin değerlerini etkileyecektir. Birleştirme, birkaç veri türünden birini saklamak istediğinizde kullanılabilir.
sendika çalışanı
karakter adı [32];
int yaş;
yüzer maaş;
;
Burada 'sendika' anahtar kelimesi yapının deklarasyonuna oldukça benzeyen birliği tanımlar. Değişken ya 'çalışanın adı' olan bir dize değeri, 'çalışanın yaşı' olan bir tam sayı değeri ya da 'çalışanın maaşını' temsil eden bir kayan değeri depolayabilir.
1. Anahtar kelime
'Struct' anahtar kelimesi bir yapıyı tanımlamak için kullanılırken 'union' anahtar kelimesi bir birliği tanımlamak için kullanılır.
2. Bellek Ayırma
Bir yapı içindeki üyeler için ayrı bellek alanı ayrılmıştır ve üyelerin belleği paylaşmayan farklı adresleri vardır. Diğer taraftan, sendika tüm üyeleri için aynı bellek alanını paylaşır, böylece paylaşılan bellek konumu tahsis edilir.
3. Üye Girişi
Birlik, tüm üyeleri için her seferinde yalnızca bir üyeye erişim sağlayan tek bir değeri depolar. Bir yapıda birden çok değer saklanabilir, böylece herhangi bir üye değerine her zaman erişilebilir ve erişilebilir.
4. Boyut
Bir yapının boyutu tüm üyelerin veya daha fazlasının toplamına eşitken, birliğin boyutu en büyük üyenin boyutuna eşittir.
5. Başlatma
Bir yapıda, birkaç üye aynı anda başlatılabilir, bir birliktelikte, türünün değeri ile yalnızca ilk üye başlatılabilir.
5. Değer
Bir yapı tüm üyelerin farklı değerlerini depolayabilir ve bir üyenin değerindeki değişikliğin diğer üyelerin değerleri üzerinde herhangi bir etkisi olmayacaktır. Birlik tüm üyeleri için aynı değeri depolarken, bir üyenin değerinin değişmesi diğer üyenin değerini etkiler.
yapı | Birlik |
Struct anahtar sözcüğü bir yapıyı tanımlamak için kullanılır. | Birlik tanımlamak için Birlik anahtar kelimesi kullanılır. |
Üyeler bir yapıda bellek paylaşmaz. | Üyeler sendikadaki bellek alanını paylaşır. |
Herhangi bir üye bir yapıda herhangi bir zamanda alınabilir. | Bir sendikada aynı anda yalnızca bir üyeye erişilebilir. |
Bir yapının birkaç üyesi aynı anda başlatılabilir. | Yalnızca ilk üye başlatılabilir. |
Yapının boyutu, her üyenin boyutunun toplamına eşittir. | Birliğin büyüklüğü en büyük üyenin büyüklüğüne eşittir. |
Bir üyenin değerini değiştirmek başka bir üyenin değerini etkilemez. | Bir üyenin değerindeki değişiklik diğer üye değerlerini etkiler. |
Tüm üyeler için farklı değerler depolar. | Tüm üyeler için aynı değeri depolar. |