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

deyimi geçersizdir.<br />

* İçerik İşleci<br />

İçerik işleci (indirection operator / dereferencing operator) de, önek konumunda bulunan<br />

tek terimli (unary prefix) bir işleçtir. İçerik işlecinin terimi bir adres bilgisi olmalıdır. Bir<br />

adres ifadesi, * işlecinin terimi olduğunda, elde edilen ifade bellekte o adreste bulunan,<br />

nesneyi temsil eder. Dolayısıyla, * işleci ile oluşturulan bir ifade bir nesneye karşılık gelir,<br />

sol taraf değeri olarak kullanılabilir.<br />

int a;<br />

gibi bir bildirimde a nesnesinin türü int türüdür. Çünkü a nesnesi içinde int türden bir veri<br />

tutulur.<br />

int *p;<br />

bildiriminde p'nin türü int türden bir adrestir. Yani p nesnesinin türü (int *) türüdür. p<br />

nesnesinin içinde (int *) türünden bir veri tutulur.<br />

char *ptr;<br />

gibi bir bildirimden iki şey anlaşılır:<br />

ptr char türden bir göstericidir. İçine char türden bir adres bilgisi yerleştirilmek için<br />

tanımlanmıştır. ptr göstericisi * işleci ile birlikte kullanıldığında elde edilen nesne char<br />

türdendir. Yani *ptr char türden bir nesnedir.<br />

Örneğin:<br />

int *p;<br />

p = (int *) 0x1FC2;<br />

*p = 100;<br />

Burada *p'nin türü int türüdür. Dolayısıyla *p = 100 gibi bir işlemden (DOS altında)<br />

yalnızca 0x1FC2 byte'ı değil, 0x1FC2 ve 0x1FC3 byte'larının her ikisi birden etkilenir.<br />

Göstericinin içindeki adresin sayısal bileşeni nesnenin düşük anlamlı byte'ının adresini<br />

içerir. Bu durumda bir gösterici değişkene, bellekteki herhangi bir bölgenin adresi<br />

atanabilir. Daha sonra * işleci ile o bellek bölgesine erişilebilir.<br />

* işlecinin terimi bir adres bilgisi olmak zorundadır. Yani terim adres değişmezi olabilir,<br />

dizi ismi olabilir, bir gösterici değişken olabilir veya adres işleci ile elde edilmiş bir adres<br />

ifadesi olabilir.<br />

İçerik işleci yalnız gösterici nesneleriyle değil, adres bilgisinin her biçimi ile (adres<br />

değişmezleri ve dizi isimleri vs.) kullanılabilir. Bu işleç, terimi olan adresteki nesneye<br />

erişmekte kullanılır. İşleç ile elde edilen değer, terimi olan adreste bulunan nesnenin<br />

değerdir.<br />

İçerik işleci ile üretilen bir ifade nesne belirtir. Nesnenin türü terim olan nesnenin adresi<br />

ile aynı türdendir.<br />

Aşağıdaki programı derleyerek çalıştırın, ekran çıktısını yorumlayın:<br />

#include <br />

int main()<br />

{<br />

char s[] = "Balıkesir";<br />

238

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

Saved successfully!

Ooh no, something went wrong!