Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab07.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
103 Кб
Скачать
☆
    1. Возвращаемые значения

Все функции, кроме типа void, возвращают значения. Данное значение определяется в операторе return. Если функция не определена как void и если не указано возвращаемое значение, то возвращается мусор. Если функция не объявлена как void, она может использоваться в качестве операнда в любом корректном выражении. Следовательно, каждое из следующих выражений корректно:

x = power(y);

if (max(x, y) > 100) printf(“Больше”);

for (ch = getche(); isdigit(ch); ) . . . ;

Тем не менее функция не может стоять с левой стороны оператора присваивания. Оператор

swap(x, y) = 100; /* некорректный оператор */

неправилен. Компилятор выдаст ошибку.

Хотя все функции не типа void имеют значения возврата, при написании программ используется обычно три типа функций.

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

Второй тип функций обрабатывает информацию и возвращает значение, показывающее была ли работа функции успешной или привела к ошибке. Примером является функция scanf( ). Если операция ввода прошла успешно, то scanf() возвращает количество введенных значений. Если возникла ошибка, то возвращаемое функцией число не равно количеству значений, которое надо было бы ввести. Функцию scanf() можно использовать в выражениях. Например:

int t, a, b;

t = scanf(“%d%d”,&a, &b);

if (t != 2) printf(“Ошибка ввода”);

В данном примере переменной t присваивается количество введенных значений.

Такими же свойствами обладают функции printf(), fscanf(), fprintf() и др.

Третий тип функций не имеет определенного возвращаемого значения. Функция в данном случае является обычной процедурой и не выдает значения. Примером служит функция srand(), которая устанавливает начальное значение для генератора случайных чисел функции rand(). Хотя все функции, кроме объявленных как void, возвращают значения, нет необходимости использовать все возвращаемые значения. Если не указано, чему присваивается возвращаемое значение, то оно просто отбрасывается. Рассмотрим следующую программу, использующую функцию mul():

#include <stdio.h>

int mul (int a, int b);

int main (void)

{

int x, y, z;

x = 10; y = 20;

z = mul(x, y); /* 1 */

printf(“%d”, mul (x, y); /* 2 */

mul (x, y); /* 3 */

return 0;

}

int mul (int a, int b)

{

return (a*b);

}

Строка 1 присваивает возвращаемое функцией mul() значение переменной z . В строке 2 возвращаемое значение напрямую не используется, но оно используется косвенно функцией printf(). Наконец в строке 3 возвращаемое значение теряется, поскольку не происходит присваивание значения какой-либо переменной и оно также не используется ни в каком-либо выражении.

    1. Аргументы функции

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

Объявление параметров происходит в круглых скобках после имени функции. Например:

int is_in(char *s, char c)

{

while (*s)

if (*s = = c) return 1;

else s++;

return 0;

}

Функция is_in() имеет два параметра: s и с. Функция возвращает 1, если символ с является частью строки s. В противном случае она возвращает 0.

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

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