ennrh adlı üyeden alıntı

Benim bildiğim kadarıyla bu dizilere özgü bir özellik. Dizilerde şöyle bir durum var. Dizinin ilk elemanının yerini bir pointer a aldıktan sonra *(pointer adı +i) şeklinde i yi sürekli arttırarak tüm diziye ulaşılabilir.

Ancak matrisler bellekte sıralı olarak yer kaplamıyor. Bir satırdan diğer satıra geçtimizde bellekte normalde birer birim ilerlerken satır atlayınca alt satıra geçer. Fakat linked list kullanımını biliyorsanız onlarla yapılabilir hocam.




O zaman size direkt soruyu sorayım belki nasıl yapmam gerektiğini anlatabilirsiniz :)
Bu içeriği veren bir fonksyon yazmam gerek , fakat nasıl yazılabileceğini kestiremedim :)



SORU 2


\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
myInitialize() fonksiyonuna ait prototip aşağıdaki gibidir:
void myInitialize(int *param1, const const int rows, const int
columns);
myInitialize() fonksiyonu, “rows” adet satıra ve "columns" adet sütuna
sahip iki boyutlu "param1" dizisinin her bir elemanını, elamanın satır ve
sütun indislerinin çarpımıyla başlatır.
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_


:::::::::::::: ÖRNEK :::::::::::::::::::::
---------main2.c DOSYASININ İÇERİĞİ:-----------

#include
void myInitialize(int *param1, const const int rows, const int columns);
int main ()
{
int myArray[5][5];
int index1, index2;
myInitialize(&myArray[0][0], 5, 5);
printf("GUNCELLENMIS DIZI:\n");
for(index1 = 0; index1 < 5; index1++){
for(index2 = 0; index2 < 5; index2++){
printf("%d\t", myArray[index1][index2]);
}
printf("\n");
}
return 0;
}
---------DOĞRU ÇIKTI:-----
GUNCELLENMIS DIZI:
0 0 0 0 0
0 1 2 3 4
0 2 4 6 8
0 3 6 9 12
0 4 8 12 16
*************************************************