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

Bir Göstericinin Bir Nesneyi Göstermesi<br />

int x = 20;<br />

int *ptr ;<br />

ptr = &x;<br />

*ptr = 30;<br />

Yukarıdaki kod parçasında ptr göstericisine int türden x nesnesinin adresi atanıyor. Bu<br />

atamadan sonra ptr göstericisinin değeri x nesnesinin adresidir. Bu durumda "ptr x<br />

değişkenini gösteriyor" denir.<br />

ptr x'i gösteriyor ise *ptr, x nesnesinin kendisidir. Daha genel bir söyleyişle, ptr bir<br />

gösterici değişken ise *ptr o göstericinin gösterdiği nesnedir!<br />

Tanımlanan bir değişkene değişkenin ismiyle doğrudan ulaşabildiğiniz gibi, onu gösteren<br />

bir göstericiyi içerik işlecine terim yaparak dolaylı bir biçimde ulaşabilirsiniz, değil mi?<br />

İşlecin İngilizce ismi olan "indirection operator" de bu durumu vurgular.<br />

Parametre Değişkeni Gösterici Olan İşlevler<br />

Göstericiler daha çok bir işlevin parametre değişkeni olarak kullanılır. Bir gösterici bir<br />

nesne olduğuna göre bir işlevin parametre değişkeni herhangi bir türden gösterici olabilir:<br />

void func(int *p)<br />

{<br />

/***/<br />

}<br />

İşlevlerin parametre değişkenleri, işlev çağrılarıyla kendilerine geçilen argüman<br />

ifadeleriyle ilkdeğerlerini aldığına göre, bir işlevin parametre değişkeni bir gösterici ise<br />

işlev de aynı türden bir adres bilgisi ile çağrılmalıdır.<br />

Böyle bir işlev, parametre değişkenine adresi kopyalanan yerel bir değişkenin değerini<br />

değiştirebilir:<br />

#include <br />

void func(int *ptr)<br />

{<br />

*ptr = 20;<br />

}<br />

int main()<br />

{<br />

int a = 10;<br />

func(&a);<br />

printf("%d\n", a);<br />

}<br />

return 0;<br />

Yukarıdaki örnekte main işlevi içinde tanımlanan yerel a isimli değişkenin adresi func<br />

işlevine gönderiliyor. func işlevi çağrıldığında, yaratılan parametre değişkeni ptr<br />

ilkdeğerini &a ifadesinden alır. İşlevin koduna geçildiğinde artık parametre değişkeni olan<br />

ptr gösterici değişkeni, adresi gönderilen a nesnesini gösterir. Bu durumda<br />

*ptr<br />

ifadesi a nesnesinin kendisidir.<br />

240

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

Saved successfully!

Ooh no, something went wrong!