массивы в C
От: Аноним  
Дата: 09.09.06 13:04
Оценка:
Привет!
Я недавно начал изучать 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;
}


Помогите, плз.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.