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

Aşağıdaki döngü ile bu dinamik dizinin her bir elemanının int türden ncols uzunluğunda<br />

dinamik bir dizinin başlangıç adresini tutulması sağlanıyor.<br />

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

prows[k] = (int *) malloc(sizeof(int) * no_of_cols);<br />

Yer ayırma işlemleri tamamlandıktan sonra<br />

prows[i][k]<br />

ifadesiyle matrisin i ve k indisli elemanına ulaşılabilir. Çünkü prows[i] (int *) türünden bir<br />

nesnedir. Bu nesnenin değeri dinamik bir dizinin başlangıç adresidir. Köşeli ayraç işlecinin<br />

işleç öncelik tablosunun birinci düzeyinde olduğunu, bu öncelik düzeyinin soldan sağa<br />

öncelik yönüne sahip olduğunu hatırlayın. Bu durumda önce daha soldaki köşeli ayraç<br />

işleci bir değer üretir. Soldaki köşeli ayraç işlecinin ürettiği (int *) türünden değer bu kez<br />

ikinci köşeli ayraç işlecine terim olur. Bu işleç de satırlardan herhangi birini oluşturan int<br />

türden dinamik dizinin bir elemanına ulaştırır. Bu durumda ulaşılan int türden nesne,<br />

matrisin [i][k] indisli elemanı olur.<br />

Ayrılan dinamik alanların geri verilmesinde dikkatli olunmalıdır. Önce matrisin satırlarını<br />

oluşturan dinamik diziler heap alanına geri verilmeli, daha sonra ise dinamik dizilerin<br />

başlangıç adreslerini tutan gösterici dizisinin geri verilme işlemi gerçekleştirilmelidir:<br />

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

free(prows[i]);<br />

free(prows);<br />

340

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

Saved successfully!

Ooh no, something went wrong!