Birlik (Union) Union birden fazla alanı temsil eder ve o alana ait en uzun alanın büyüklüğü kadar hafızada yer ayrilir. union [birlik adi] { değişken türü <değişken adı>; değişken türü <değişken adı>;... }; union dene{ int x; char t[10]; char y[5]; }k; 1 Birlik (Union), enum, typedef Bu tanıma göre x tamsayısı için bellekte 4 baytlık t değişkeni için 10 baytlık ve y değişkeni için 5 baytlık yer ayrılmıştır. En büyük değer olan 10 baytlık yer ayrılır.
Birlik (Union) Union lar bir hafıza parçasının farklı veritipleri tarafından kullanılabilmesini sağlar Tüm değişkenler tarafından kullanılan alan aslında ynıdır. Deklarasyonu Structure gibidir, ancak kullanımı tamamen farklıdır. union union_ismi{ ÜyedeğişkenTipi1üyeDeğişkenIsmi1; ÜyedeğişkenTipi1üyeDeğişkenIsmi1;. } nesneisimleri 2 Birlik (Union), enum, typedef
Birlik (Union) union union1{ char c; int i; float f; } unionnesne1; içinde 3 eleman bulunur: unionnesne1.c unionnesne1.i unionnesne1.f 3 değişken farklı tipte olsalar bile aynı hafıza adresini kullanırlar Bu nedenle birinde yapılan değişiklik tüm değişkenlere yansır Birbirinden bağımsız 3 değer tutulması mümkün 3 Birlik (Union), enum, typedef değildir.
Anonymous Unions (İsimsiz Birlikler) Sıradan Birlik içeren Structure struct { char baslik[50]; char yazar[50]; union { float dolar; int lira; } fiyat; } kitap; İsimsiz Birlik içeren Structure struct { char baslik[50]; char yazar[50]; union { float dolar; int lira; }; } kitapisimsiz; Eğer isimsiz bir birlik kullanılırsa bu birliğin elemanlarına direk olarak ulaşılabilir 2 kod arasındaki tek fark üye değişkenlere ulaşma şeklimizdir: Sıradan Birlik içeren Structure kitap.fiyat.dolar kitap.fiyat.lira İsimsiz Birlik içeren Structure kitapisimsiz.dolar kitapisimsiz.lira 4 Birlik!!!Dikkat: (Union), dolar enum, typedef ve lira değerlerinin içerisine farklı değerler yüklenemez!!!
5 Birlik (Union), enum, typedef Birlik (Union)
Struct ve Union Tanımda Hafızada Ayrılan Yer 6 Birlik (Union), enum, typedef Neden 8? Neden 4?
Struct ve Union Birlikte Kullanımı 7 Birlik (Union), enum, typedef
Struct ve Union Birlikte Kullanımı katalog.kitap.yazar char tipinde, içine yazılan 65 değeri A olarak okunuyor katalog.kitap.yazar içine kaydedilen AB karakterleri, integer olarak okunduğu zaman, 66(B) ve 65 (A) değerlerinin 2lik düzende 8bite karşılık gelen değerleri birleştirilir ve okunur: BA 01000010 01000001 8 Birlik (Union), enum, typedef 16961
Enum Değişkenin alabileceği değerlerin sabit olduğu durumlarda programı daha okunabilir hale getirmek için kullanılır. Genel yazım biçimi; enum tip_adı{değer_1, değer_2,..., değer_n} değişken_adı; tip_adı ve değişken adı; C++ dilinin isimlendirme kurallarına uygun olarak seçilmiş bir isimdir. 9 Birlik (Union), enum, typedef
Enum C++ ta enum türü diğer değişken türlerine göre ayrı bir türdür ve enum türünden değişkenlere ancak enum türünden sabitler atanabilir. Enum içinde değer atayabilirsiniz. Atadığınız ilk değerden itibaren ardışık değer atama değer atamasanız bile otomatik devam edecektir. enum para_birimi{tl=1, DOLAR, EURO} Burada; TL=1 DOLAR=2 EURO=3 değerlerini alacaktır. 10 Birlik (Union), enum, typedef
11 Birlik (Union), enum, typedef Enum
12 Birlik (Union), enum, typedef Enum
typedef C++ var olan değişken tiplerine kendi belirlediğimiz isimleri takmamıza izin verir. Var olan değişken tiplerine takma isim veriyoruz denebilir typedef var_olan_değişken_tipi bizim_verdigimiz_isim; Nerede kullanılabilir: Sıklıkla kullanılan değişken tiplerine takma isim koymak için Programın daha sonraki versiyonlarında belli değişkenler için kullanılan değişken tipinin değişme ihtimali varsa. Bu durumda program içinde birden çok yerde kullanılan değişken tipinin, her kullanıldığı yerde değil sadece typedef tanımlamasında değiştirilmesi yeterli olacaktır typedef char karakter; typedef char * kpointer; typedef int intdizi [50]; 13 Birlik (Union), enum, typedef
C++ dilinde program kodları bu deyimle tamamen Türkçeleştirilebilir. Yan taraftaki örnekte typedef için iki ayrı kullanım alanı tanımlanmıştır. typedef 14 Birlik (Union), enum, typedef
15 Birlik (Union), enum, typedef typedef