Выделение памяти под двумерный массив - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! скажите пожалуйста почему нельзя выделить под двумерный массив память через функцию. т.е возможно выделить но только под строки? но не как не под длину строки. Т.е если я хочу выделить память для длины строк то я должен это сделать через другую функцию. Спасибо! пример:
main()
{
    int **array=NULL;
    malloc_arr(&array,3);
    createColumn(array,3);
}
void malloc_arr(int **array,int size)
{
    if (!(*array = (int**)malloc(sizeof(int*) * size))) {
        exit(1);
    }
 
       for (i = 0;i < size;i++) { //при присвоении значений в другой функции будет ругаться
        if (!(*(array+ i) = (int*)malloc(sizeof(int)*size)))
            exit(1);
    }
}
void createColumn(int **array,int size)
{
    int i=0;
    for (i = 0;i < size;i++) {
        if (!(*(array + i) = (int*)malloc(sizeof(int)*size)))
            exit(1);
    }
}

Решение задачи: «Выделение памяти под двумерный массив»

textual
Листинг программы
int *_arr = (int*)malloc(M*N*sizeof(int));
#define arr(i, j) _arr[i+j*M]
_arr[1+M*2]=3;
arr(1,2)=3; //то же самое что предыдущая строка
...
free(_arr);

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы