Привет!
Я недавно начал изучать C. Появились некоторые вопросы...
Каким образом правильно передавать двумерные(или 3-мерные) массивы в функции?
И как осуществлять доступ к отдельным элементам?
Почему для простого указателя int *p нельзя написать p[...][...], а требуется указывать тип int **? Ведь двумерные массивы (M x N) на самом деле располагаются в непрерывном блоке, как и простой вектор длины M*N?
Этот код не работает:
#include <stdio.h>
int arr[3][3] = {
1, 2, 3,
4, 5, 6,
7, 8, 9,
};
void fn(int **array, int m, int n)
{
int k, j, *p;
p = array;
for(k = 0; k < m; k++)
{
for(j = 0; j < n; j++)
printf("%i ", array[k][j]);
putchar('\n');
}
/*for(k = 0; k < m; k++)
{
for(j = 0; j < n; j++)
printf("%i ", p++);
putchar('\n');
}*/
}
int main()
{
arr[0][1] = 9;
fn(arr, 3, 3);
return 0;
}
Помогите, плз.