• Sonuç bulunamadı

Birlik (Union) 1 Birlik (Union), enum, typedef

N/A
N/A
Protected

Academic year: 2022

Share "Birlik (Union) 1 Birlik (Union), enum, typedef"

Copied!
15
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

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;

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.

1 Birlik (Union), enum, typedef

(2)

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

(3)

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 değildir.

3 Birlik (Union), enum, typedef

(4)

Anonymous Unions (İsimsiz Birlikler)

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 İsimsiz Birlik içeren Structure struct {

char baslik[50];

char yazar[50];

union {

float dolar;

int lira;

} fiyat;

} kitap;

struct {

char baslik[50];

char yazar[50];

union {

float dolar;

int lira;

};

} kitapIsimsiz;

Sıradan Birlik içeren Structure İsimsiz Birlik içeren Structure kitap.fiyat.dolar

kitap.fiyat.lira kitapIsimsiz.dolar

kitapIsimsiz.lira

!!!Dikkat: dolar ve lira değerlerinin içerisine farklı değerler yüklenemez!!!

4 Birlik (Union), enum, typedef

(5)

Birlik (Union)

5 Birlik (Union), enum, typedef

(6)

Struct ve Union Tanımda Hafızada Ayrılan Yer

Neden 4 Neden 8 ? ?

6 Birlik (Union), enum, typedef

(7)

Struct ve Union Birlikte Kullanımı

7 Birlik (Union), enum, typedef

(8)

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

01000001 01000010

16961

8 Birlik (Union), enum, typedef

(9)

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

(10)

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)

Enum

11 Birlik (Union), enum, typedef

(12)

Enum

12 Birlik (Union), enum, typedef

(13)

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

(14)

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.

14 Birlik (Union), enum, typedef

(15)

typedef

15 Birlik (Union), enum, typedef

Referanslar

Benzer Belgeler

İnce yapı sabiti gibi birimsiz sabitlerin birimi olan sabitlerden daha temel olduğunu Cambrid- ge Üniversitesi’nden John Barrow, The Constants of.. Nature (Doğa

Bir parti veriyorsunuz, acaba kaç kişi davet etmelisiniz ki gelenlerin en az ikisinin yaş gününün aynı olması olasılığı %50'den büyük olsun?. Yıl 365 gün ve yılın

Yeşil Beyoğlu'nun bir başka köşesi de, yazlık terası daha da yeşillenmiş o- lan Beyoğlu Bar-Pub, serin sakin yem­ yeşil terasta isterseniz içkinizi

Yazışma Adresi : Dokuz Eylül Üniversitesi, Atatürk İlkeleri ve İnkılâp Tarihi Enstitüsü, Tınaztepe Yerleşkesi, Buca - 35160 İzmir.. Tel: (0 232) 301 79 28 - 301 79 37

b — isteklilerin en geç aşağıda yazılı işler için ayrı ayrı tesbit edilmiş olan müracaat son günü mesai saati sonuna kadar birer dilekçe ile

[r]

Artık bütün cihan, &#34;Çinlilere, Selçukilere, Arap- lara,, velhasıl şarka mahsus olan ve garp mimarla- rının da asırlarca tesirinden kurtulamadıkları tezyi- nat ve

Doğal Sayılar Basamak Değeri-3. Kaç tane