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

int main()<br />

{<br />

int a[ROW][COL];<br />

srand(time(0));<br />

fill_matrix(a, ROW);<br />

display_matrix(a, ROW);<br />

}<br />

return 0;<br />

int (*ptr)[10] gibi bir gösterici bir işlevin parametre değişkeni olarak kullanıldığında int<br />

ptr[][10] biçiminde de yazılabilir. Yani aşağıdaki iki bildirim birbirine eşdeğerdir:<br />

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

void fill_matrix(int ptr[][10], int size);<br />

Hatta istenirse ilk köşeli ayraç içine de bir tamsayı yazılabilir. Ancak derleyici açısından bu<br />

tamsayının bir önemi yoktur. Bazı programcılar yalnızca okunabilirlik açısından dizinin<br />

boyutunu ilk köşeli ayraçların içine yazarlar. Yukarıdaki bildirim şöyle de yapılabilirdi:<br />

void fill_matrix(int ptr[5][10], int size);<br />

Matrisleri işleve geçirmenin bir başka yolu da matristeki ilk elemanın adresini, matrisin<br />

satır ve sütun sayısını işleve geçirmek olabilir. Yukarıda yazdığımız işlevleri şimdi<br />

değiştiriyoruz:<br />

#include <br />

#include <br />

#include <br />

#define ROW 5<br />

#define COL 10<br />

void fill_matrix(int *ptr, int rowsize, int colsize)<br />

{<br />

int i, k;<br />

}<br />

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

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

ptr[i + k] = rand() % 100;<br />

void display_matrix(int *ptr, int rowsize, int colsize)<br />

{<br />

int i, k;<br />

}<br />

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

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

printf("%d ", ptr[i + k]);<br />

printf("\n");<br />

}<br />

int main()<br />

{<br />

int a[ROW][COL];<br />

srand(time(0));<br />

315

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

Saved successfully!

Ooh no, something went wrong!