Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы_по_проге_Берлин / Книги / учебное пособие ОАиП.pdf
Скачиваний:
49
Добавлен:
11.02.2015
Размер:
947 Кб
Скачать

декларируют, что объекты i (переменная) и mas (массив), имеющие тип int и float, не создаются, а память им выделяется при их объявлении в другой функции.

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

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

Если в качестве передаваемого аргумента используется массив, то в функцию передается указатель на массив. При вызове функции в списке аргументов записывается имя массива являющееся адресом первого.

Можно использовать три варианта описания массива, в качестве формального параметра функции.

1. Параметр в функции может быть объявлен как массив соответствующего типа с указанием его размера.

#include <stdio.h>

 

int max(int ms[10])

// прототип функции fun

{int k=ms[0];

for(int i=1; i<10; i++) if(k<ms[i]) k=ms[i];

return k;

}

main()

{int mas[3][4], i, j; for(i=0; i<3; i++)

{for(j=0; j<4; j++) scanf( ”%d”&mas[i][j]);

printf(“\nмаксимальное значение в строке %d =%d”, i,fun(mas[i]));

}

}

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

2. Массив в качестве параметра в функции может быть объявлен без указания его размера. Так как сам массив в стек не копируется, то размер массив в общем случае компилятору не требуется.

int max(int ms[]) // прототип функции fun { // тело функции аналогично опмсанному выше

}

3. Наиболее распространенный способ – объявление параметра-массива указателем на соответствующий тип данных. Функцию можно описать следующим образом:

int max(int *ms)

{ // тело функции аналогично опмсанному выше

}