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 />

#include <br />

typedef union {<br />

char ch;<br />

int i;<br />

double d;<br />

char s[4];<br />

}Data;<br />

int main()<br />

{<br />

Data data;<br />

printf("&data = %p\n", &data);<br />

printf("&data.ch = %p\n", &data.ch);<br />

printf("&data.i = %p\n", &data.i);<br />

printf("&data.d = %p\n", &data.d);<br />

printf("data.s = %p\n", data.s);<br />

}<br />

return 0;<br />

Yukarıdaki programın derlenip çalıştırılmasıyla ekrana hep aynı adres yazdırılır.<br />

Birlik elemanlarının aynı orjinden, yani aynı sayısal adresten başlayarak yerleştirilmesi bir<br />

elemanın değeri değiştirildiğinde, diğer elemanların da değerlerinin değişeceği anlamına<br />

gelir. Zaten birliklerin kullanılmasının asıl amacı da budur.<br />

Birlik Nesnelerine İlkdeğer Verilmesi<br />

C standartlarına göre, birlik nesnelerinin yalnızca ilk elemanına ilkdeğer verilebilir. Bir<br />

birlik nesnesinin birden fazla elemanına ilkdeğer vermek geçersizdir:<br />

union Dword {<br />

unsigned char byte;<br />

unsigned int word;<br />

unsigned long dword;<br />

} x = {'m'};<br />

union Dword y = {'a', 18, 24L}; /* Geçersiz */<br />

Birlikler Neden Kullanılır<br />

Birlikler başlıca üç amaç için kullanılabilir. Birinci amaç bellekte yer kazanmaya yöneliktir.<br />

Birlik kullanarak farklı zamanlarda kullanılacak birden fazla değişken için ayrı ayrı yer<br />

ayırma zorunluluğu ortadan kaldırılır. Örneğin bir hediyelik eşya kataloğu ile üç değişik<br />

ürünün satıldığını düşünelim: <strong>kitap</strong>, tshort ve saat. Her bir ürün için bir stok numarası,<br />

fiyat bilgisi ve ürün tip bilgisinin dışında ürüne bağlı olarak başka özelliklerin de tutulmak<br />

zorunda olduğunu düşünelim:<br />

<strong>kitap</strong>lar : isim, yazar, sayfa sayısı.<br />

t-short : desen, renk, boyut<br />

saat : model<br />

413

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

Saved successfully!

Ooh no, something went wrong!