Для того чтобы создать двумерный динамический массив на си необходимо выделить память под один одномерный массив, элементами которого будут также являться одномерные массивы. Пусть наш массив будет называться А и хранить в себе целочисленные значения. Для начала необходимо вспомнить, что имя массива содержит в себе ссылку на первый элемент, поэтому мы будем использовать указатель (*). Так как массив A будет двумерным, то он будет указывать на элемент, который также будет являться массивом. То есть для него также потребуется указатель, тогда его объявление будет выглядеть следующим образом: int** a, то есть указатель, на указатель на int...
До этого момента мы рассматривали одномерные массивы, которыми не всегда можно ограничиться. Допустим, необходимо обработать некоторые данные из таблицы. В таблице есть две характеристики: количество строк и количество столбцов. Также и в двумерном массиве, кроме количества элементов массива, есть такие характеристики как, количество строк и количество столбцов двумерного массива. То есть, визуально, двумерный массив — это обычная таблица, со строками и столбцами. Фактически двумерный массив — это одномерный массив одномерных массивов...