08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

BİRLİKLER<br />

Programcı tarafından yeni bir tür yaratmasına olanak veren bir başka araç da "birlikler"dir<br />

(unions).<br />

Birlikler yapılara çok benzer. Bir birliğin kullanılabilmesi için, yani bir birlik türünden<br />

nesnelerin tanımlanabilmesi için önce birliğin bildirimi yapılmalıdır. Birlik bildirimleri aynı<br />

yapı bildirimleri gibi yapılır. Tek fark struct anahtar sözcüğü yerine union anahtar<br />

sözcüğünün kullanılmasıdır.<br />

Aşağıdaki örneği inceleyin:<br />

union Dword {<br />

unsigned char byte;<br />

unsigned int word;<br />

unsigned long dword;<br />

};<br />

Yukarıdaki deyimle, ismi union Dword olan yeni bir tür bildirilmiş olur. Bu bildirimin<br />

görülür olduğu yerlerde, bu tür kullanılabilir. Bir typedef bildirimi yapılarak, bu türün<br />

isminin, yalnızca Dword olması da sağlanabilir:<br />

typedef union {<br />

unsigned char byte;<br />

unsigned int word;<br />

unsigned long dword;<br />

}Dword;<br />

Birlik Türünden Değişkenlerinin Tanımlanması<br />

Birlik değişkenleri aynı yapı değişkenleri gibi tanımlanır. Birliklerde de, bellekte yer<br />

ayırma işlemi yapı bildirimi ile değil, yapı nesnesinin tanımlanması ile yapılır.<br />

Dword a, b;<br />

deyiminden sonra, a ve b, Dword türünden iki değişkendir.<br />

Yine yapılarda olduğu gibi, birliklerde de bildirim ile tanımlama işlemi birlikte yapılabilir:<br />

union Double {<br />

double d;<br />

unsigned char s[8];<br />

} a, b, c;<br />

Bu durumda a, b ve c değişkenlerinin bilinirlik alanları, birlik bildiriminin yapıldığı yere<br />

bağlı olarak, yerel ya da global olabilir.<br />

Birlik elemanlarına da yapı elemanlarında olduğu gibi nokta işleciyle erişilir. Örneğin<br />

yukarıdaki tanımlamadan sonra a.d birliğin double türünden ilk elemanını belirtir. Benzer<br />

biçimde birlik türünden nesneleri gösterecek, gösterici değişkenler de tanımlanabilir. Ok<br />

işleci ile yine yapılarda olduğu gibi birliklerde de, adres yoluyla birlik elemanlarına<br />

ulaşılabilir:<br />

union Dword *p;<br />

p->word = 100;<br />

p->word ifadesi ile, p adresindeki birlik nesnesinin word isimli elemanına erişilir.<br />

411

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!