
- •Одномерные и двумерные массивы
- •Размещение массива в памяти
- •456. Объем памяти для массива
- •457. Инициализация массива
- •458. Доступ к элементам массива
- •459. Использование элементов массива в цикле
- •460. Использование констант при объявлении массивов
- •461. Передача массивов как параметров функций
- •462. Массивы как функции
- •463. Отличительная особенность символьных строк как массивов
- •464. Передача массивов в стек при вызове функций
- •465. Максимальный объем памяти, занимаемой массивом
- •466. Использование сверхбольшой модели памяти для больших массивов
- •Двухмерные массивы
- •Массивы строк
458. Доступ к элементам массива
Значения, которые хранятся в массиве, называются элементами массива. В следующей программе ELEMENTS.C, содержащей инициализируемый массив scores, для вывода элементов массива используется функция printf:
#include <stdio.h>
void main(void)
{
int scores[5] = (80, 70, 90, 85, 80);
printf("Значения элементов массива\n");
printf("scores[0] %d\n", scores[0]);
printf("scores[1] %d\n", scores[l]);
printf("scores[2] %d\n", scores[2]);
printf("scores[3] %d\n", scores[3]);
printf("scores[4] %d\n", scores[4]);
}
После компиляции и выполнения этой программы на экран выводится:
C:\> ELEMENTS <Enter>
Значения элементов массива
scores[0] = 80
scores[1] = 70
scores[2] = 90
scores[3] = 85
scores[4J = 80
Как можно видеть, для обращения к элементам массива необходимо указать сначала имя массива, а затем номер требуемого элемента в квадратных скобках.
459. Использование элементов массива в цикле
В С458 были выведены на экран значения элементов массива с номерами от 0 до 4. Обращение к элементам массива с указанием номера каждого элемента массива - способ достаточно громоздкий. В качестве альтернативы можно использовать переменную для указания номеров элементов. Например, предположим, что переменная;' содержит значение 2, тогда следующий оператор присвоит элементу array [2] значение 80:
i = 2;
array [i] =80;
В следующей программе SHOWARRA.C для вывода на экран значений массива scores используется переменная i и цикл for:
#include <stdio.h>
void main(void)
{
int scores[5] = (80, 70, 90, 85, 80);
int i;
printf("Значения элементов массива\n");
for (i = 0; i < 5; i++)
printf("scores[%d] %d\n", i, scores[i]);
}
460. Использование констант при объявлении массивов
При работе с массивами необходимо указать размер массива. Например, в следующей программе 5_VALUES.C определяется массив из 5 элементов и используется цикл/олдля вывода значений этого массива:
#include <stdio.h>
void main(void)
{
int values[5] = {80, 70, 90, 85, 80);
int i;
for (i = 0; i < 5; i++)
printf("values[%d] %d\n", i, values[i]);
}
Предположим, мы хотим изменить программу, увеличив размер массива до 10 значений; в этом случае нам придется изменить не только объявление массива, но и границу цикла for. Альтернативой этому является объявление массива с использованием константы. В следующей программе 5_CONST.C объявляется массив, размер которого равен значению ARRAY_SIZE. Как видим, программа использует константу не только для объявления массива, но и в цикле for:
#include <stdio.h>
#define ARRAY_SIZE 5
void main(void)
{
int values[AKKAY_SIZE] = (80, 70, 90, 85, 80};
int i;
for (i = 0; i < ARRAY_SIZE; i++)
printf("values[%d] %d\n", i, values[i]);
}
Теперь, если понадобится изменить размер массива, можно просто изменить значение константы ARRA Y_SIZE; в этом случае автоматически изменится как верхняя граница цикла обработки массива, так и размер самого массива.
461. Передача массивов как параметров функций
Массив - это переменная, которая может содержать множество значений одного и того же типа. Как и все другие переменные, массивы могут использоваться как параметры функций. В следующей программе ARRFUNCT.C определяется функция show_array для вывода значений массива. Как видим, программа передает функции массив и количество элементов, содержащихся в массиве:
#include <stdio.h>
void show_array(int values[], int number_of_elements)
{
int i;
for (i = 0; i < number of elements; i++)
printf("%d\n", values[i]);
}
void main(void)
{
int scores[5] = (70, 80, 90, 100, 90};
show_array(scores, 5);
}
При объявлении функции с массивом в качестве формального параметра необязательно указывать размер массива. В случае с функцией show_values квадратные скобки, которые следуют за именем переменной value, информируют компилятор лишь о том, что параметр является массивом; размер массива для компилятора не имеет значения.