Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_Информатика.doc
Скачиваний:
1
Добавлен:
16.09.2019
Размер:
143.36 Кб
Скачать

1.2 Функции пользователя

1.2.1 Общие моменты

Функция – это независимая совокупность объявлений и операторов, предназначенная для выполнения определенной задачи.

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

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

С использованием функций в языке Си связаны три понятия: определение функции, объявление функции, и вызов функции.

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

Определение функции возвращающей значение:

[static] тип_возвращаемого_результата имя_функции (описания формальных параметров)

{

Тело функции

return возвращаемый результат;

}

Возврат результата из функции осуществляется при помощи оператора return. С помощью return можно вернуть только одно значение.

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

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

Каждый формальный параметр должен быть специфицирован, т.е. для него задается тип данных, даже при совпадении типов.

Класс памяти по умолчанию static.

Пример:

int max(int a, int b)

{

int r

r=(a>b) ? a : b;

return r;

}

Определение функции, не возвращающей значение:

[static] void имя_функции (описания формальных параметров)

{

Тело функции

}

Пример:

void swap(int *a, int *b)

{

int temp;

temp=*a;

*a=*b;

*b=temp;

}

Объявление, описание или прототип функции задает ее имя, типы и число формальных параметров, тип значения, возвращаемого функцией, и класс памяти. В объявлении формальные параметры могут иметь имена, однако это не является необходимым. Объявление оканчивается символом ‘;’.

Прототип для функции возвращающей значение:

[static/ extern] тип_результата имя функции();

Прототип для функции не возвращающей значение:

[static/ extern] void имя функции();

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

Вызов функции

имя_функции (список фактических параметров);

Формальные и фактические параметры:

Формальные параметры – это фактически шаблоны, под которые в действительности не выделяется память, в момент определения функции.

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

Требования к фактическим и формальным параметрам:

Они должны совпадать по:

  • количеству;

  • по порядку следования;

  • по типу данных.

Правила описания функций:

  1. Описание функции нужно размещать до места вызова этой функции.

  2. Определение и описание функции не может размещаться в теле другой функции.

Примеры:

int max(int a, int b)

{

int r

r=(a>b) ? a : b;

return r;

}

main()

{

int a,s,l;

a=3;s=2;

l=max(a, s);

printf(“%d”,l);

}

или

Примеры

int max(int a, int b);

main()

{

int a,s,l;

a=3; s=2;

l=max(a, s);

printf(“%d”,l);

}

int max(int a, int b)

{

int r;

r=(a>b) ? a : b;

return r;

}

Процедура вызова функции

void main()

{

int x, y, z;

x=1;

y=2;

z=fun(x,y);

}

int fun(int x, int y)

{

int p;

p=x+y;

return p;

}