08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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

typedef struct {<br />

int stok_no;<br />

float fiyat;<br />

int urun_tipi;<br />

char <strong>kitap</strong>isim[20];<br />

char yazar[20];<br />

int sayfa_sayisi;<br />

char desen[20];<br />

int renk;<br />

int boyut;<br />

char saatisim[20];<br />

int model;<br />

}Katalog;<br />

Yukarıdaki bildirimde Katalog yapısının urun_tipi isimli elemanı ürünün ne olduğu bilgisini<br />

tutar. Bu elemanın değeri yalnızca KITAP, TSHORT ya da SAAT olabilir. Bunların simgesel<br />

değişmezler olarak tanımlandığını düşünelim. Yukarıda bildirilen yapı ürünlerin bütün<br />

özelliklerini tutabilir ancak şöyle bir sakıncası vardır:<br />

Eğer ürün tipi KITAP değil ise isim[20], yazar[30] ve sayfa_sayisi isimli elemanlar hiç<br />

kullanılmaz. Yine ürün tipi TSHORT değil ise desen[20], renk, boyut elemanları hiç<br />

kullanılmaz.<br />

Unix ya da Windows sistemlerinde byte hizalama altında yukarıda bildirilen Katalog<br />

türünün sizeof değeri 108'dir. Yani Katalog türünden bir nesne tanımlandığında bu nesne<br />

bellekte 108 byte yer kaplar.<br />

#include <br />

int main()<br />

{<br />

Katalog katalog;<br />

}<br />

printf("sizeof(katalog) = %d\n", sizeof(katalog));<br />

return 0;<br />

Ama Katalog yapısının bir elemanının bir birlik türünden olmasıyla yer kazancı<br />

sağlanabilir:<br />

414

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

Saved successfully!

Ooh no, something went wrong!