Создать двумерный массив через указатель - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д