Массив - упорядоченная последовательность пронумерованных элементов одинакового типа.
Индекс - номер элемента массива. Индексы элементов массива начинаются с нуля. Элемент массива может иметь несколько индексов. Размерность массива - количество индексов каждого элемента.
Вектор - одномерный массив (один индекс).
Матрица – двумерный массив (первый индекс - номер строки, второй - номер столбца).
При объявлении одномерного массива в квадратных скобках задается размер массива – количество его элементов (не путать с размерностью массива – количеством индексов). Размер массива должен быть известен при компиляции, т.е. не может быть переменной величиной. Поэтому в качестве размера можно указывать только целочисленную константу. При объявлении двумерных массивов в первых квадратных скобках задается число строк матрицы, а во вторых скобках – число столбцов. Например:
float x[50]; /* вещественный вектор x */
char st[80]; /* символьный вектор st */
int w[5][10]; /* целочисленная матрица w из 5 строк и
10 столбцов, всего 5*10 = 50 элементов. */
Элемент массива является переменной, тип которой указан в объявлении массива. Элемент массива обозначается именем массива, за которым в квадратных скобках указываются индексы элемента (индексация начинается с нуля).
x[0], x[1], ... x[49] – элементы массива x, вещественные переменные;
st[0], st[1], ... st[79] - символьные переменные, st - текст из 80 символов.
Элементы матрицы размещаются в памяти строка за строкой в следующем порядке:
w[0][0], w[0][1], ... , w[0][9],
w[1][0], w[1][1], ... , w[1][9],
. . .
w[4][0], w[4][1], ... , w[4][9].
Размер массива чаще задается именованной константой, в этом случае для изменения размера достаточно изменить значение константы только в одном месте.
В следующем примере объявлен вещественный массив, размером до 50 элементов:
#define N 50 /* максимальный размер массива 20*/
float x [N];
Фактическое количествообрабатываемых элементов n обычно вводится при выполнении программы:
int n; /* количество элементов */
scanf (“%d”, &n);
/* ввод элементов массива */
for (int i = 0; i < n; i++)
scanf (“%f”, &x[i]);
Элементу массива можно присваивать значение, использовать в качестве операнда в выражении и т. д.
Основное свойство массива: все элементы одновременно присутствуют в оперативной памяти, одинаково доступны и могут обрабатываться в любом порядке.
При объявлении массива можно задавать начальные значения его элементов.
float z[10] = { 2.5, 2, 3.5 };
/* z[0]=2.5, z[1]=2, z[2]=3.5, остальные элементы равны 0 */
int m[ ] = { 2, 3, 2 };
/* Количество элементов массива = количеству заданных значений */
int m1[10 ] = { 0 }; /* все элементы равны 0 */
char t[ ] = "KGTU";
/* Эквивалентно 'K', 'G', 'T', 'U', '\0' */
Начальное значение символьного массива можно задавать не поэлементно, а в виде строки символов, т.е. в виде строковой константы. Строковая константа завершается нуль-символом '\0'.