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

Data d;<br />

biçiminde yapılması geçersizdir. Oysa C++ dilinde bu durum geçerlidir.<br />

İşte struct anahtar sözcüğünün, yapı nesnesi tanımlamalarında yapı isminden önce<br />

kullanılma zorunluluğunu ortadan kaldırmak için programcılar, typedef bildirimiyle kendi<br />

bildirdikleri yapı türlerine ilişkin yeni tür isimleri oluştururlar.<br />

Bir yapı türüne ilişkin yeni bir tür isminin oluşturulması üç ayrı biçimde yapılabilir.<br />

1. Önce yapı bildirimi yapılır. Daha sonra bildirilen yapı türü için ayrı bir typedef bildirimi<br />

yapılır:<br />

struct tagPerson {<br />

char name[30];<br />

int no;<br />

};<br />

typedef struct tagPerson Person;<br />

Person per = {"Necati Ergin", 123};<br />

Yukarıdaki örnekte önce struct tagPerson isimli bir tür yaratılıyor daha sonra typedef<br />

bildirimiyle struct tagPerson türüne yeni bir isim olarak Person ismi veriliyor. typedef<br />

bildiriminden sonra, hem struct tagPerson hem de Person isimleri, tür isimleri olarak<br />

kullanılabilir.<br />

2. typedef bildirimi ile yapı bildirimi tek bir bildirim biçiminde birleştirilebilir:<br />

typedef struct tagPerson {<br />

char name[30];<br />

int no;<br />

} Person;<br />

Person per;<br />

Daha önce verilen kuralı anımsayın: Bu bildirimin başında typedef anahtar sözcüğü<br />

olmasaydı Person ismi struct tagPerson türünden bir nesnenin ismi olurdu, değil mi?<br />

Yukarıdaki örnekte hem ismi struct tagPerson olan bir yapı bildiriliyor hem de typedef<br />

bildirimiyle bu yapıya yeni bir isim olarak Person ismi veriliyor. İlgili bildirimden sonra<br />

hem struct tagPerson hem de Person isimleri, tür isimleri olarak kullanılabilir.<br />

3. Yapı ismi (structure tag) kullanılmadan yapılan bir yapı bildirimi ile typedef bildirimi<br />

birleştirilebilir:<br />

typedef struct {<br />

char name[30];<br />

int no;<br />

}Person;<br />

Person y;<br />

Yukarıdaki örnekte yaratılan türün tek bir ismi vardır. Bu isim Person ismidir. Bu tür<br />

kullanılmak istendiğinde artık struct anahtar sözcüğü kullanılamaz.<br />

Programcıların çoğu, yapı isimleriyle (structure tag), typedef bildirimiyle oluşturulacak tür<br />

isimleri için farklı isimler bulmak yerine birkaç karakter kullanarak aralarında ilişki<br />

kurarlar. Çok kullanılan kalıplardan biri, yapı isminin başına bir "alt tire" karakteri<br />

konularak tür isminden ayrılmasıdır:<br />

390

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

Saved successfully!

Ooh no, something went wrong!