Выделение памяти под двумерный массив - 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);