Hoşgeldin Misafir

C dilinde structure, union ve enum yapilari ve önemleri

Burak Bey

23 Mar 2019
2,323 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Merhaba Arkadaşlar,

Sizlere structure, union ve enum yapılarından bahsetmek istiyorum çünkü forumda C/C++ başlığı altında ne kadar arasam da bu yapılar hakkında bir yazı bulamadım. 

Bu yapılar, gerek hafıza da kapladıkları yerler gerekse çalışma hızı veya kodun okunabilirliği açısından çok önemlidir. Bu yapılara hakim olmak önemlidir.

Structure :

Structure'lar birçok farklı veri tipini tek bir değişken adı altında depolamanıza ve bunlara daha kolay erişmenizi sağlar.

Structure tanımlama örneği : 
Kod:

Kod:
struct ornek \\ornek adinda bir structure olusturur
{ 
   int x, y; 
   float z;
   char t;
} isim; \\ornek adinda olusturulan structure'dan isim adiyla bir tane olusturur.

Burada "isim" adıyla structure oluşturulması demek artık sizin bu structure'ınız size ait bir değişken demek. Aynı int, float, char gibi artık ornek adında bir veri yapınız olmuş oldu.
41.png
 Bu da sizin kendi kodunuza daha çok hakim olmanızı ve istediğiniz verilere daha kolay erişebilmenize yardımcı oluyor. 
41.png
 Burada structure isimli yapınızın boyutu içerinde bulunan diğer değişkenlerin toplamına eşittir. Yani bizim örneğimizde int(32 bit)+int(32 bit)+float(32 bit)+char(8 bit) = 104 bit (13 byte) kadar hafıza da yer kaplar.


Union :

Union yapısı da structure gibi içerisinde birçok diğer değişkenleri barındırır ancak structure'dan farkı bu değişkenlerin hepsi için ayrı ayrı hafızada yer ayırmaktansa union yapınızın içerinde bulunan en büyük hafıza birimi kadar yer ayırır. Yani,

Union tanımlama örneği : 

Kod:

Kod:
union ornek \\ornek adinda bir union olusturur
{ 
   int x, y; 
   float z;
   char t;
} isim; \\ornek adinda olusturulan union'dan isim adiyla bir tane olusturur.

Yukarıda gördüğümüz örnekte oluşturduğumuz union değişkeninin hafıza da kapladığı yer en büyük yapı birimi 32 bit olması nedeniyle 32 bittir. Ancak tabiki union'ı burada hemen "Aaa union hem daha az yer kaplıyor hem de structure gibi her şeyi içinde bulunduruyor." diyerek istediğimiz her yerde kullanamayız! Union ve structure yapılarının kendilerinde has kullanım alanları vardır. Structure yapısı genellikle veri depolamak için kullanılıyorken, union yapısı genelde verilerde bir dönüşüm vb. yapılmak istenildiğinde kullanılır. 

Enum :

Enum yapısı, genellikle sıralı değişkenler tanımlanıcakken kullanılır. Böylece bu değişkenlerin tanımlanabilirliğini ve erişilebilirliğini arttırır. 

Enum tanımlama örneği :

Kod:

Kod:
enum week{Pazartesi, Sali, Carsamba, 
     Persembe, Cuma, Cumartesi, Pazar};

Enum yapısında ilk veriye 0'dan başlayarak değişkenlerin hepsinde ardışık sayılar atanır. Pazartesi=0, Salı=1 ... gibi. Tabiki burada siz de işe karışarak başlangıç sayısını değiştirebilir veya değişkenlere istediğiniz sayıları atayabilirsiniz