Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Си++ Занятие 8.doc
Скачиваний:
3
Добавлен:
17.11.2019
Размер:
97.79 Кб
Скачать

5. Передача массива в функцию

Использование массивов в качестве аргументов функции имеет некоторую особенность. Так как имя массива является указателем на его первый элемент, то при передаче массива фактически происходит передача указателя на начало массива, сам же массив, объявленный в вызывающей программе, остается на своем месте.

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

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

Если аргументом функции является массив, то ее формальный параметр можно объявить тремя способами:

  • передача массива через указатель,

  • передача массива определенного размера,

  • передача массива неопределенного размера.

Пример 9. Вычисление суммы массива

В примере первый параметр определяет сам массив, а второй – его размерность.

int summa (int array[], int n)

{int res=0;

for (int i=0; i<n; i++)

res += array[i];

return res;

}

void main()

{//определение массива в 100 элементов

int mas[100];

//инициализация массива

for (int i=0; i<100; i++)

mas[i]=2*i+1;

//создание переменной s и вычисление суммы

int s = summa (mas, 100);

}

При вызове функции summa (mas, 100) происходит передача лишь адреса массива mas. Этот процесс можно представить так: массив mas[] получает новое имя array[].

Обратим внимание, что при вызове функции в аргументе используется только имя массива без индекса, т.к. передается адрес массива. В формальном параметре функции используются только пустые [], т.к. нет необходимости задавать размерность при ожидании адреса массива.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]