Создать двумерный массив через указатель - 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;

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

  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
Похожие ответы