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

s yapı değişkeninin struct Date türünden olan birth_date isimli elemanına nokta işleciyle<br />

ulaşılabilir:<br />

s.birth_date<br />

Yukarıdaki ifade struct Date türünden bir nesne gösterir. İstenirse bu nesnenin day, mon,<br />

year isimli elemanlarına nokta işlecinin ikinci kez kullanılmasıyla erişilebilir:<br />

s.birth_date.mon<br />

ifadesi int türden bir nesne gösterir. Nokta işlecinin işleç öncelik tablosunun birinci öncelik<br />

düzeyinde olduğunu, bu öncelik düzeyine ilişkin öncelik yönünün soldan sağa olduğunu<br />

anımsayın.<br />

Bir ya da birden fazla elemanı programcı tarafından bildirilen bir türden olan yapı<br />

nesnelerine bileşik nesne (composite object) denir. Yukarıdaki örnekte struct Student<br />

türünden olan s değişkeni bir bileşik nesnedir.<br />

Bileşik Nesnelere İlkdeğer Verilmesi<br />

Normal olarak ilkdeğer vermede elemanlar sırasıyla, içteki yapı da dikkate alınacak<br />

biçimde, yapı elemanlarına atanır. Ancak içteki yapının elemanlarına verilen değerlerin,<br />

ayrıca küme ayraçları içine alınması, okunabilirliği artırdığı için salık verilir:<br />

struct Student s = {"Necati Ergin", {10, 10, 1967}, 123};<br />

Eğer içteki yapı ayrıca küme ayracı içine alınmışsa içteki yapının daha az sayıda<br />

elemanına ilkdeğer vermek mümkün olabilir:<br />

struct Student s = {"Necati Ergin", {10, 10}, 123};<br />

Burada s değişkeninin, birth_date elemanının year elemanına ilkdeğer verilmiyor.<br />

Derleyici bu elemana otomatik olarak 0 değeri yerleştirir. Burada içteki küme ayraçları<br />

kullanılmasaydı, 123 ilkdeğeri year elemanına atanır, no elemanına ise 0 değeri verilirdi.<br />

Aşağıdaki gibi bir bildirim de geçerlidir:<br />

struct Data {<br />

int a[3];<br />

long b;<br />

char c;<br />

} x = {{1, 2, 3}, 50000L, 'A'}, *p;<br />

Bileşik Nesne Oluşturmanın Faydaları<br />

Bir yapının başka bir yapı türünden elemana sahip olması durumunda, içerilen elemanın<br />

ait olduğu yapı türünün arayüzünden, yani dışarıya hizmet veren işlevlerinden<br />

faydalanma olanağı doğar.<br />

Aşağıdaki gibi bir yapı bildirilmiş olsun:<br />

struct Person {<br />

char name[16]<br />

char fname[20]<br />

struct Date bdate;<br />

};<br />

Yukarıdaki bildirimde struct Person yapısının bir elemanı struct Date türündendir.<br />

struct Person per;<br />

378

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

Saved successfully!

Ooh no, something went wrong!