Двумерный массив на языке C

Многомерный массив — это массив массива или, точнее, совокупность массивов. В отличие от одномерного массива, многомерный массив хранит коллекцию массивов. Давайте пересмотрим концепцию измерения.

  • Одномерный массив : Набор данных/значений.
  • Двумерный массив : Набор одномерных массивов.
  • Трехмерный массив : Набор двумерных массивов.
  • N-мерный массив : Набор N-1-мерных массивов.

Мы можем объявить массив с любым измерением. Однако двумерный массив наиболее популярен и широко используется для решения многих математических задач.

Примечание: Будь то одномерный, двумерный или N-мерный массив. Все элементы массива хранятся последовательно в памяти.

Двумерный массив

Двумерный массив-это совокупность одномерных массивов. Двумерный массив имеет особое значение по сравнению с другими типами массивов. Вы можете логически представить двумерный массив в виде матрицы. Любая матричная задача может быть легко преобразована в двумерный массив.

Синтаксис для объявления двумерного массива

typearray_name[row-size][col-size];

  • type — это допустимый тип данных C.
  • array_name — это допустимый идентификатор C, который обозначает имя массива.
  • row-size — это константа, указывающая размер строки матрицы.
  • col-size также является константой, определяющей размер столбца. col-size является необязательным при инициализации массива во время его объявления.

Пример объявления двумерного массива

intmatrix[3][4];

Приведенное выше утверждение объявляет двумерный целочисленный массив размером 3×4, то есть 3 строки и 4 столбца (в терминах матрицы).

Как инициализировать двумерный массив

Вы можете инициализировать двумерный массив в любой заданной форме.

intmatrix[4][3] = {
{10, 20, 30}, // Инициализирует матрицу[0]
{40, 50, 60}, // Инициализирует матрицу[1]
{70, 80, 90}, // Инициализирует матрицу[2]
{100, 110, 120} // Инициализирует матрицу[3]
};

Если вы конкретно упомянули размер строки и столбца, то фигурные скобки для каждой строки внутри массива инициализация необязательна. Следовательно, вы можете записать вышеприведенную инициализацию как:

intmatrix[4][3] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120};

Примечание: Будьте осторожны при использовании описанного выше подхода для инициализации. Вы должны явно указать размер строки и столбца. В противном случае компилятор C будет генерировать ошибки компиляции.

Размер столбца массива необязателен при указании отдельных строк в паре фигурных скобок.

intmatrix[4][] = {
{10, 20, 30}, // Инициализирует матрицу[0]
{40, 50, 60}, // Инициализирует матрицу[1]
{70, 80, 90}, // Инициализирует матрицу[2]
{100, 110, 120} // Инициализирует матрицу[3]
};

Существует несколько способов инициализации двумерного массива. Это зависит от программистов, как они инициализируют. Однако первый подход считается стандартным для инициализации двумерного массива.

Как получить доступ к двумерному массиву

Двумерный массив использует два значения индекса для доступа к определенному элементу. Где первый индекс указывает строку, а второй-столбец для доступа. Пример, как получить доступ к двумерному массиву:

matrix[0][0] = 10; // назначает 10, чтобы первый элемент первой строки
matrix[0][1] = 20; // назначает от 20 до второй элемент первой строки
matrix[1][2] = 60; // назначает от 60 до третьего элемента второй строки
matrix[3][0] = 100; // назначает 100 на первый элемент четвертый ряд

Поскольку индексы массива являются целочисленными значениями, следовательно, вы также можете подключить цикл для доступа к двумерному массиву. Двумерный массив нуждается в двух значениях индекса для доступа к любому элементу массива. Поэтому вам нужны две петли. Один внешний цикл для доступа к каждой строке матрицы, второй цикл для каждого столбца матрицы.

// Выполняется 4 раза, повторяя каждую строку
for(i=0; i<4; i++)
{
// Выполняется 3 раза для каждой строки.
for(j=0; j<3; j++)
{
scanf(«%d», &matrix[i][j]);
}
}

Пример программы для использования двумерного массива

Напишите программу на языке Си для объявления двумерного массива размером 4×3. Считывание значений в каждом элементе массива от пользователя и отображение значений всех элементов.

/**
* Программа C для ввода и отображения двумерного массива
*/

#include<stdio.h>

#define ROW_SIZE 4 // Определить постоянный размер строки
#define COL_SIZE 3 // Определение постоянного размера столбца

int main()
{
int matrix[ROW_SIZE][COL_SIZE];
int row, col;

printf(«Введите элементы в матрицу размера %dx%d \n», ROW_SIZE, COL_SIZE);

/* Внешний цикл для итерации по каждой строке */
for(row=0; row<ROW_SIZE; row++)
{
/* Внутренний цикл для итерации по столбцам каждой строки */
for(col=0; col<COL_SIZE; col++)
{
/* Входной элемент в массиве */
scanf(«%d», &matrix[row][col]);
}
}

/*
* Печать всех элементов массива
*/
printf(«\nElements in matrix are: \n»);
for(row=0; row<ROW_SIZE; row++)
{
for(col=0; col<COL_SIZE; col++)
{
printf(«%d «, matrix[row][col]);
}
printf(«\n»);
}

return0;
}

Выход:

Введите элементы в матрицу размером 4х3
10 20 30
40 50 60
70 80 90
100 110 120
Элементами в матрице являются:
10 20 30
40 50 60
70 80 90
100 110 120

Пример программы для использования трехмерного массива

/**
* Программа C для ввода и отображения трехмерного массива
*/

#include<stdio.h>

#define SIZE1 2
#defineSIZE2 2
#defineSIZE3 3

int main()
{
int arr[SIZE1][SIZE2][SIZE3];
int i, j, k;

/*
* Входные элементы в массиве
*/
printf(«Ввод элементов в трехмерный массив размером %dx%dx%d \n», SIZE1, SIZE2, SIZE3);
for(i = 0; i < SIZE1; i++)
{
для(j = 0; j < SIZE2; j++)
{
для (k = 0; k < SIZE3; k++)
{
scanf(«%d», &arr[i][j][k]);
}
}
}

/*
* Печать элементов массива
*/
printf(«\nElements в трехмерном массиве: \n»);
for(i = 0; i < SIZE1; i++)
{
для(j = 0; j < SIZE2; j++)
{
для (k = 0; k < SIZE3; k++)
{
printf(«%d\n», arr[i][j][k]);
}
}
}

return0;
}

Выход:

Ввод элементов в трехмерный массив размером 2х2х3
1
2
3
4
5
6
7
8
9
10
11
12

Элементами в трехмерном массиве являются:
1
2
3
4
5
6
7
8
9
10
11
12

Вывод

Многомерные массивы могут иметь любое число измерений, и по мере увеличения числа измерений соответственно возрастает и сложность. Не забывайте, что мы можем кодировать массивы с размерами больше двумерных, не бойтесь, во этом нет ничего сложного!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *