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

Bu durum şöyle de ifade edilebilir: ptr int türden 10 elemanlı bir diziyi gösteren<br />

göstericidir. ptr herhangi bir boyuttaki int türden bir diziyi değil, yalnızca 10 elemanlı int<br />

türden bir diziyi gösterebilir. ptr göstericisi örneğin ++ işleci ile 1 artırılırsa bellekte yer<br />

alan bir sonraki 10 elemanlı int türden diziyi gösterir. Yani<br />

ptr + 1<br />

adresinin sayısal bileşeni ptr adresinin sayısal bileşeninden sizeof(int) * 10 kadar daha<br />

büyüktür.<br />

ptr + 1 ifadesi iki boyutlu a dizisinin ikinci elemanı olan 10 elemanlı int türden dizinin<br />

adresine karşılık gelir. Bu durumda<br />

*(ptr + 1)<br />

ifadesi aslında a[1] dizisidir.<br />

Şüphesiz *(ptr + 1) ifadesi yerine ptr[1] ifadesi de kullanılabilir. Bu durumda bu gösterici<br />

yardımıyla iki boyutlu dizinin tüm elemanlarına bir döngü ile ulaşılabilir:<br />

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

ptr[k]<br />

gibi bir döngü deyimi ile döngünün her turunda matrisin bir satırına, yani iki boyutlu<br />

dizinin bir elemanı olan COL uzunluğundaki dizilere ulaşılır.<br />

Bu durumda 2 boyutlu bir dizi yani bir matris üzerinde işlem yapacak bir işlevin<br />

parametre değişkeni böyle bir gösterici olabilir. İşlevin diğer parametresi de dizinin<br />

boyutunu alabilir. Aşağıdaki programı inceleyin:<br />

#include <br />

#include <br />

#include <br />

#define ROW 5<br />

#define COL 10<br />

void fill_matrix(int (*ptr)[COL], int size)<br />

{<br />

int i, k;<br />

}<br />

for (i = 0; i < size; ++i)<br />

for (k = 0; k

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

Saved successfully!

Ooh no, something went wrong!