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

int main()<br />

{<br />

int x = 10;<br />

int y = 20;<br />

int *p = &x;<br />

int *q = &y;<br />

printf("*p = %d\n", *p);<br />

printf("*q = %d\n", *q);<br />

swap_ptr(&p, &q);<br />

printf("*p = %d\n", *p);<br />

printf("*q = %d\n", *q);<br />

}<br />

return 0;<br />

main işlevi içinde int türden x ve y isimli değişkenler tanımlanıyor. Daha sonra<br />

tanımlanan p gösterici değişkeni x nesnesini, q gösterici değişkeni ise y değişkenini<br />

gösteriyor.<br />

Daha sonra çağrılan swap_ptr işlevine p ve q göstericilerinin adresleri gönderiliyor. İşleve<br />

yapılan çağrıdan sonra, p göstericisi y değişkenini, q göstericisi ise x değişkenini gösterir.<br />

Şimdi de aşağıdaki işlevi inceleyin:<br />

void ppswap(int **p1, int **p2)<br />

{<br />

int temp = **p1;<br />

**p1 = **p2;<br />

**p2 = temp;<br />

}<br />

ppswap işlevi hangi nesnelerin değerlerini takas ediyor?<br />

Bir Gösterici Dizisi Üzerinde İşlem Yapan İşlevler<br />

Bir dizi üzerinde işlem yapan işlevin dizinin başlangıç adresi ile dizinin boyutunu alması<br />

gerektiğini biliyorsunuz.<br />

int türden bir dizi ile ilgili işlem yapan bir işlevin bildirimi aşağıdaki gibi olabilir:<br />

void process_array(int *, int size);<br />

Böyle bir işlev dizinin ilk elemanının adresi ve dizinin boyutu ile çağrılır, değil mi?<br />

int a[10];<br />

gibi bir dizi söz konusu olduğunda, dizi ismi olan a, işleme sokulduğunda otomatik olarak<br />

bu dizinin adresine dönüştürülür.<br />

Yani derleyici açısından bakıldığında a ifadesi &a[0] ifadesine eşdeğerdir.<br />

Bu işlev<br />

process_array(a, 10);<br />

biçiminde çağrılabilir.<br />

Bu kez elemanları char * türden olan bir dizi tanımlanmış olsun:<br />

char *a[100];<br />

309

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

Saved successfully!

Ooh no, something went wrong!