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

struct Date {<br />

int day, mon, year;<br />

};<br />

int main()<br />

{<br />

struct Date date;<br />

printf("date.day'in adresi = %p\n", &date.day);<br />

printf("date.mon'un adresi = %p\n", &date.mon);<br />

printf("date.year'in adresi = %p\n", &date.year);<br />

}<br />

return 0;<br />

Yapı Elemanı Olarak Dizilerin Kullanılması<br />

Yapının bir elemanı herhangi türden bir dizi olabilir. Bu durumda da yapının dizi<br />

elemanının ismi bir nesne belirtmez, bir adres bilgisidir. Önce aşağıdaki örneği inceleyin:<br />

#include <br />

#define NAME_LEN 20<br />

struct Person {<br />

char name[NAME_LEN];<br />

int no;<br />

};<br />

int main()<br />

{<br />

struct Person per;<br />

gets(per.name);<br />

puts(per.name);<br />

}<br />

putchar(per.name[3]);<br />

per.name++ /* Geçersiz. Dizi ismi nesne değildir. */<br />

return 0;<br />

Bildirilen struct Person yapısının bir elemanı char türden 20 elemanlı bir dizidir. Bu<br />

durumda kaynak kodumuz Unix işletim sisteminde derlendiğinde, sizeof(struct Person)<br />

24 olur. Tanımlanan her struct Person türünden nesnenin içinde 20 elemanlı char türden<br />

bir dizi yer alır.<br />

main işlevi içinde kullanılan per.name ifadesi, per yapı nesnesinin içinde yer alan char<br />

türden dizinin başlangıç adresidir. Bu ifade işleme sokulduğunda, derleyici tarafından<br />

otomatik olarak char * türüne dönüştürülür.<br />

gets(per.name);<br />

çağrısıyla gets işlevine, per nesnesi içindeki char türden name dizisinin başlangıç adresi<br />

geçiliyor. Böylece klavyeden alınan yazı nesnenin içindeki diziye yerleştiriliyor.<br />

puts(per.name);<br />

çağrısıyla da benzer biçimde bu dizinin içindeki yazı ekrana yazdırılıyor.<br />

367

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

Saved successfully!

Ooh no, something went wrong!