Создать двумерный массив через указатель - C (СИ)
Формулировка задачи:
Нужно создать 2 матрицы размером m,n и вектор B. Как сделать правильно через указатель?
/* */ #include<iostream> int main() { int m,n; printf("Enter m "); scanf("%f", m); printf("Enter n "); scanf("%f", n); int *B = new int B[m]; int **A = new int *(*(A + m) + n); int **C = new int *(*(C + m) + n); for (int i = 0; i < m; ++i) for(int j = 0; j < n; j++) { A[i][j] = new int[i][j]; C[i][j] = new int[i][j]; } }
Решение задачи: «Создать двумерный массив через указатель»
textual
Листинг программы
size_t rows, cols; // get rows and cols T **ap = malloc(sizeof *ap * rows); if (ap) { size_t i = 0; for (i = 0; i < cols; i++) { ap[i] = malloc(sizeof *ap[i] * cols); } } ap[i][j] = x;
Объяснение кода листинга программы
- Объявлены две переменные типа size_t: rows и cols, которые содержат количество строк и столбцов массива соответственно.
- Выделен память для двумерного массива через указатель ap, используя функцию malloc. Общий размер памяти, выделенной для массива, равен произведению количества строк и количества столбцов.
- В цикле for перебираются все элементы массива ap[i][j], начиная с i = 0 и j = 0, и присваивается значение x.
- Если выделение памяти для массива не удалось (ap равно NULL), то весь выделенный массив освобождается с помощью функции free.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д