Anahtar Farkı – C'ta Yapıya Karşı Birleşim
Bir dizi, C dili tarafından desteklenen yapılandırılmış bir veridir. Aynı türdeki veri öğelerini depolamak için bir dizi kullanılabilir. int işareti [10] şeklinde bir ifade varsa; o zaman işaretler on işareti depolayabilen bir dizidir ve hepsi tam sayıdır. Bazen farklı türdeki veri öğelerini aynı bellek konumunda depolamak gerekir. Örneğin, bir çalışanın bir çalışan kimliği, adı, departmanı, yaşı vb. olabilir. Bunlar farklı veri türlerindedir. Bu nedenle, çeşitli veri öğelerini tek bir birim olarak depolamak için bir yönteme sahip olmak gerekir. C'deki Yapılar ve Birlikler, aynı bellek konumunda farklı türdeki veri öğelerini depolamak için kullanılır. Bir yapı ve bir birlik benzerdir, ancak esas olarak bellek tahsisi nedeniyle farklılık gösterirler. Bir yapı değişkenini depolamak için gereken bellek, tüm üyelerin bellek boyutunun toplamıdır. Bir birleşim değişkenini depolamak için gereken bellek, birleşimdeki en büyük öğe için gereken bellektir. C'de yapı ile birleşim arasındaki temel fark budur. Bu makalede, C'de yapı ile birleşim arasındaki fark tartışılmaktadır.
C'de Yapı Nedir?
A yapısı, C'de kullanıcı tanımlı bir veri türüdür. Farklı türlerdeki veri öğelerini birleştirmeye yardımcı olur. Bir yapı kayıtları temsil edebilir. Bir öğrencinin öğrenci_kimliği, öğrenci_adı vb. olabilir. Her bir değişkeni ayrı ayrı depolamak yerine, tüm bu farklı veri öğeleri bir yapı kullanılarak tek bir birime sıkıştırılabilir. 'struct' anahtar kelimesi kullanılarak tanımlanır. Bir yapıda, tüm üyelerine herhangi bir zamanda erişilebilir. Aşağıdaki, türetilmiş bir veri türü struct Student oluşturur.
struct Öğrenci {
intstudent_id;
char öğrenci_adı[20];
};
Yukarıdaki yapı için değişkenler aşağıdaki gibi bildirilebilir.
struct Öğrenci öğrenci1, öğrenci2, öğrenci3;
Yapının üyelerine erişmek için iki yöntem vardır. Bu, üye operatörünü (.) ve yapı işaretçi operatörünü (->) kullanmaktır. Üyelere Structure_variable_name kullanılarak erişilebilir. üye adı. Programcı öğrenci 2'nin ismine erişmek isterse, ifadeyi printf(student2.student_name); şeklinde yazabilir.
Aşağıdaki programa bir yapısı ile bakın.
Şekil 01: Yapıları olan C programı
Yukarıdaki programa göre Student bir yapıdır. Student_id ve Student_name içerir. Ana programda yapı tipinin iki değişkeni bildirilmiştir. Bunlara öğrenci1 ve öğrenci2 denir. Öğrenci1'in kimliği, öğrenci1.student_id=1 olarak üye operatörü kullanılarak 1 değeriyle atanır. "Ann" adı bir dizedir. Bu nedenle, strcpy dize kopyalama işlevi kullanılarak öğrenci_adı üyesine kopyalanır. Kimlik ve isim, öğrenci2'ye benzer şekilde atanır. Son olarak, bu değerler üye operatörü kullanılarak yazdırılır.
Bir yapı değişkenini depolamak için gereken bellek miktarı, tüm üyelerin bellek boyutunun toplamıdır. Student_id 4 bayt içerir ve öğrenci_adı 20 bayt içerir (her karakter için bir bayt). Toplam 24 bayt, yapının gerektirdiği bellek boyutunun toplamıdır.
C'de Birlik Nedir?
Birleşim, C'de kullanıcı tanımlı bir veri türüdür. Farklı veri türlerinin aynı bellek konumunda depolanmasına yardımcı olur. Bir Kitap, kitap_adı, fiyat vb. özelliklere sahip olabilir. Bunların her biri için değişkenler oluşturmak yerine, bir birleşim kullanarak tüm farklı veri türlerini tek bir birime sıkıştırmak için bir birleşim kullanılabilir.'Birlik' anahtar kelimesi kullanılarak tanımlanır. Aşağıdakiler, türetilmiş bir veri birliği Kitabı oluşturur.
unionBook{
karakter adı[20];
çift fiyat;
};
Yukarıdaki birleşim için değişkenler aşağıdaki gibi bildirilebilir.
union Kitap kitap1, kitap2;
Birlik üyelerine erişmek için iki yöntem vardır. Bu, üye operatörünü (.) ve yapı işaretçi operatörünü (->) kullanmaktır. Üyelere union_variable_name kullanılarak erişilebilir. üye adı. Programcı kitap1'in adına erişmek isterse, ifadeyi printf(book1.name); şeklinde yazabilir.
Bir sendika ile aşağıdaki programa bakın.
Şekil 02: union kullanan C programı
Yukarıdaki programa göre Kitap bir birliktir. book1 union türünde bir değişkendir. İsim ve fiyat atanmış değerlerdir. Birlik içinde, aynı anda üyelerinden yalnızca birine erişilebilir ve diğer tüm üyelerin çöp değerleri olacaktır. id değeri düzgün yazdırılmıyor ancak fiyat değeri düzgün yazdırılıyor.
Şekil 03: Union ile değiştirilmiş C programı
Yukarıdaki programa göre Kitap bir birliktir. kitap1 ve kitap2, birleşim tipi değişkenlerdir. İlk olarak kitap1 adı için değer atanır ve yazdırılır. Daha sonra kitap2 adı için değer atanır ve yazdırılır. Aynı anda bir üye kullanıldığı için tüm üyeler doğru yazdırılır. Bir birliği depolamak için gereken bellek, birliğin en büyük öğesi için gereken bellektir. Yukarıdaki programda isim değişkeni 20 bayttır. Fiyatından daha büyüktür. Bu nedenle, birleşim için bellek tahsisi 20 bayttır.
C'de Yapı ve Birleşim Arasındaki Benzerlikler Nelerdir?
- C'deki Yapı ve Birlik, kullanıcı tanımlı veri türleridir.
- C'deki Yapı ve Birleşim, aynı bellek konumunda farklı veri türlerini depolamak için kullanılabilir.
C'de Yapı ve Birleşim Arasındaki Fark Nedir?
Yapı ve Birlik C'ta |
|
Yapı, farklı türlerdeki verileri bir araya getirmeyi sağlayan, C dilinde kullanıcı tanımlı bir veri türüdür. | Union, farklı türlerdeki verileri bir araya getirmeyi sağlayan, C dilinde kullanıcı tanımlı bir veri türüdür. |
Erişilebilirlik | |
Bir yapıda tüm üyelerine her an erişilebilir. | Bir birliktelikte, aynı anda üyelerinden yalnızca birine erişilebilir ve diğer tüm üyeler çöp değerler içerir. |
Bellek Tahsisi | |
Bir yapı değişkenini depolamak için gereken bellek, tüm üyelerin bellek boyutunun toplamıdır. | Birleşim değişkenini depolamak için gereken bellek, birleşimdeki en büyük öğe için gereken bellektir. |
Anahtar Kelime | |
Bir yapıyı tanımlamak için kullanılan anahtar kelime 'struct'tır. | Bir birliği tanımlamak için kullanılan anahtar kelime 'sendika'dır. |
Özet – C'ta Yapıya Karşı Birlik
Aynı türdeki veri öğelerini depolamak için bir dizi kullanılır. Bazen farklı türdeki veri öğelerini aynı bellek konumunda depolamak gerekir. C programlama dili, bu görevi gerçekleştirmek için yapı ve birlik sağlar. Her ikisi de kullanıcı tanımlı veri türleridir. Bir yapı değişkenini saklamak için gereken bellek, tüm üyelerin bellek boyutunun toplamıdır. Birleşim değişkenini depolamak için gereken bellek, birleşimdeki en büyük öğe için gereken bellektir. C.'da yapı ve birleşim arasındaki fark budur.