Составители:
Рубрика:
пара которых выделяет последовательность значений, относящихся к одной размерно-
сти. Пример [9].
int B[4][4][5] = { { {0} }, { {50}, {55,60} }, { {245}, {123}, {342, 234, 127} } };
Задает инициализацию следующим элементам массива.
B[0][0][0] ==0;
B[1][0][0] ==50; B[1][1][0] ==55; B[1][1][1] ==60;
B[2][0][0] ==245; B[2][1][0] ==123;
B[2][2][0] ==342; B[2][2][1] ==234; B[2][2][2] ==127;
Остальные элементы массива явно не инициализируются.
Как и в случае одномерных массивов, доступ к элементам многомерных массивов
возможен с помощью индексированных переменных и с помощью указателей. В общем
случае для трехмерного массива, например, индексированный элемент d[i][j][k] соответ-
ствует выражению *(*(*(d+i)+j)+k). Допустимо в одном выражении комбинировать обе
формы доступа к элементам многомерного массива *(d[i][j]+k).
Элементами массива могут быть указатели. Пример.
char *s[5];
Массив s, состоящий из 5 указателей на символы.
Использование указателей в качестве элементов массива позволяет в ряде случаев
экономить объем памяти, выделяемой под массив. Особенно это актуально если для ка-
ждого элемента массива требуется выделять различный объем памяти. В данном случае
при использовании стандартных массивов, выделяется объем памяти, необходимый для
наибольшего элемента. Свободные ячейки памяти элементов меньшей размерности за-
полняются нулями. При использовании указателей память располагается более рацио-
нально. Пример. Необходимо создать массив, элементами которого будет список фами-
лий. Количество символов в фамилиях нам неизвестно, поэтому под каждый элемент
необходимо выделять максимально возможное их число, например 15. Рассмотрим мас-
сив из 3 фамилий.
char s[][15] = {"Иванов", "Петров", "Сидоров"};
Нерациональное использование памяти налицо. При использовании в данном случае
массива указателей.
char *p[] = {"Иванов", "Петров", "Сидоров"};
В данном случае для каждого указателя массива p выделяется 3*sizeof(char*) байтов.
§ 2.6. Сортировка и поиск в массиве.
Задача поиска элементов в массиве является одной из главных задач при работе с
массивами. И в простейшем случае поиск можно осуществить простым перебором эле-
ментов массива.
for (i=0; i<n; i++)
if (A[i] = = B) break;
if (i != n) ...элемент найден, i - его порядковый номер...
42
пара которых выделяет последовательность значений, относящихся к одной размерно-
сти. Пример [9].
int B[4][4][5] = { { {0} }, { {50}, {55,60} }, { {245}, {123}, {342, 234, 127} } };
Задает инициализацию следующим элементам массива.
B[0][0][0] ==0;
B[1][0][0] ==50; B[1][1][0] ==55; B[1][1][1] ==60;
B[2][0][0] ==245; B[2][1][0] ==123;
B[2][2][0] ==342; B[2][2][1] ==234; B[2][2][2] ==127;
Остальные элементы массива явно не инициализируются.
Как и в случае одномерных массивов, доступ к элементам многомерных массивов
возможен с помощью индексированных переменных и с помощью указателей. В общем
случае для трехмерного массива, например, индексированный элемент d[i][j][k] соответ-
ствует выражению *(*(*(d+i)+j)+k). Допустимо в одном выражении комбинировать обе
формы доступа к элементам многомерного массива *(d[i][j]+k).
Элементами массива могут быть указатели. Пример.
char *s[5];
Массив s, состоящий из 5 указателей на символы.
Использование указателей в качестве элементов массива позволяет в ряде случаев
экономить объем памяти, выделяемой под массив. Особенно это актуально если для ка-
ждого элемента массива требуется выделять различный объем памяти. В данном случае
при использовании стандартных массивов, выделяется объем памяти, необходимый для
наибольшего элемента. Свободные ячейки памяти элементов меньшей размерности за-
полняются нулями. При использовании указателей память располагается более рацио-
нально. Пример. Необходимо создать массив, элементами которого будет список фами-
лий. Количество символов в фамилиях нам неизвестно, поэтому под каждый элемент
необходимо выделять максимально возможное их число, например 15. Рассмотрим мас-
сив из 3 фамилий.
char s[][15] = {"Иванов", "Петров", "Сидоров"};
Нерациональное использование памяти налицо. При использовании в данном случае
массива указателей.
char *p[] = {"Иванов", "Петров", "Сидоров"};
В данном случае для каждого указателя массива p выделяется 3*sizeof(char*) байтов.
§ 2.6. Сортировка и поиск в массиве.
Задача поиска элементов в массиве является одной из главных задач при работе с
массивами. И в простейшем случае поиск можно осуществить простым перебором эле-
ментов массива.
for (i=0; iСтраницы
- « первая
- ‹ предыдущая
- …
- 40
- 41
- 42
- 43
- 44
- …
- следующая ›
- последняя »
