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

#include <br />

int main()<br />

{<br />

int a[5] = {1, 2, 3, 4, 5};<br />

int k;<br />

int *ptr = a;<br />

++*ptr;<br />

for (k = 0; k < 5; ++k)<br />

printf("%d ", a[k]); /* 2 2 3 4 5 */<br />

}<br />

return 0;<br />

++*ptr ifadesinde iki işleç kullanılıyor: İçerik işleci ile artırma işleci. Her iki işleç de işleç<br />

öncelik tablosunun ikinci seviyesinde bulunur. İkinci seviyenin öncelik yönü sağdan sola<br />

olduğuna göre önce daha sağda bulunan içerik işleci değer üretir. İçerik işleci ptr<br />

göstericisinin gösterdiği nesneye ulaşır böylece bu nesne, artırma işlecine terim olur. Bu<br />

durumda ptr göstericisinin gösterdiği nesnenin değeri 1 artırılır. Kısaca<br />

++*ptr;<br />

deyimi , "ptr'nin gösterdiği nesnenin değerini 1 artır" anlamına gelir.<br />

*++p durumu<br />

p göstericisinin 1 fazlası olan adresteki nesneye ulaşılır. Yani ifadenin değeri p<br />

göstericisinin gösterdiği nesneyi izleyen nesnenin değeridir. Tabi ifadenin<br />

değerlendirilmesinden sonra ++ işlecinin yan etkisinden dolayı p göstericisinin değeri 1<br />

artırılır. Yani ptr bir sonraki nesneyi gösterir. Aşağıdaki örneği dikkatle inceleyin:<br />

#include <br />

int main()<br />

{<br />

int a[5] = {1, 2, 3, 4, 5};<br />

int k;<br />

int *ptr = a;<br />

*++ptr = 10;<br />

*ptr = 20;<br />

for (k = 0; k < 5; ++k)<br />

printf("%d ", a[k]); /* 1 20 3 4 5 */<br />

}<br />

return 0;<br />

x = *++p;<br />

deyimi ile x değişkenine artırılmış adresteki bilgi atanır.<br />

*p++ durumu<br />

++ işleci ve * işlecinin ikisi de ikinci öncelik seviyesindedir. Bu öncelik seviyesine ilişkin<br />

öncelik yönü sağdan soladır. Önce ++ işleci ele alınır ve bu işleç ifadenin geri kalan<br />

kısmına p göstericisinin artmamış değerini üretir. Bu adresteki nesneye ulaşılır daha<br />

sonra p göstericisinin değeri 1 artırılır. *p++ ifadesinin değeri p göstericisinin gösterdiği<br />

246

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

Saved successfully!

Ooh no, something went wrong!