Создать двумерный массив через указатель - C (СИ)

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

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

Нужно создать 2 матрицы размером m,n и вектор B. Как сделать правильно через указатель?
Листинг программы
  1. /*
  2. */
  3.  
  4. #include<iostream>
  5.  
  6. int main()
  7. {
  8. int m,n;
  9. printf("Enter m ");
  10. scanf("%f", m);
  11. printf("Enter n ");
  12. scanf("%f", n);
  13. int *B = new int B[m];
  14. int **A = new int *(*(A + m) + n);
  15. int **C = new int *(*(C + m) + n);
  16. for (int i = 0; i < m; ++i)
  17. for(int j = 0; j < n; j++)
  18. {
  19. A[i][j] = new int[i][j];
  20. C[i][j] = new int[i][j];
  21. }
  22. }

Решение задачи: «Создать двумерный массив через указатель»

textual
Листинг программы
  1. size_t rows, cols;
  2. // get rows and cols
  3. T **ap = malloc(sizeof *ap * rows);
  4. if (ap)
  5. {
  6.   size_t i = 0;
  7.   for (i = 0; i < cols; i++)
  8.   {
  9.     ap[i] = malloc(sizeof *ap[i] * cols);
  10.   }
  11. }
  12.  
  13. ap[i][j] = x;

Объяснение кода листинга программы

  1. Объявлены две переменные типа size_t: rows и cols, которые содержат количество строк и столбцов массива соответственно.
  2. Выделен память для двумерного массива через указатель ap, используя функцию malloc. Общий размер памяти, выделенной для массива, равен произведению количества строк и количества столбцов.
  3. В цикле for перебираются все элементы массива ap[i][j], начиная с i = 0 и j = 0, и присваивается значение x.
  4. Если выделение памяти для массива не удалось (ap равно NULL), то весь выделенный массив освобождается с помощью функции free.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы