Создание двумерного массива - C (СИ)
Формулировка задачи:
Здравствуйте! Столкнулся с такой проблемой: как правильно создать двумерный массив в Си? Все, что ни пытался найти - все ведет на с++, но никак ни на си. Поясню, мне нужно создать массив по такому принципу:
Но! Будет ли такой способ правильным для создания массива?
Просто я всегда делал массивы в си таким образом:
Скажите, может есть вариант создания двумерного массива как с одномерным? Или такой способ, как я написал тоже правильный? Спасибо!
scanf("N= %d", &N);
scanf("M= %d", &M);
int matrix[N][M];scanf("N= %d", &N);
int*tab=(int*)maloc(sizeof(int)*N);Решение задачи: «Создание двумерного массива»
textual
Листинг программы
int (*matrix)[N][M] = malloc(sizeof *matrix);
Объяснение кода листинга программы
В данном коде создается двумерный массив (матрица) с размерами N на M.
int (*matrix)[N][M] = malloc(sizeof *matrix);- в этой строке кода происходит выделение памяти под матрицу.matrix- это указатель на первый элемент матрицы.sizeof *matrix- это размер памяти, которую нужно выделить. Он равен размеру указателя на элемент матрицы (в данном случаеint).malloc- это функция, которая выделяет память. После выполнения этой строки кода,matrixбудет указывать на выделенную память, которую можно использовать для хранения элементов матрицы.