Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 5 - Функции.doc
Скачиваний:
41
Добавлен:
16.03.2015
Размер:
268.29 Кб
Скачать

Возвращаемые значения

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

key = getchar();

Приведенная инструкция вызывает функцию getchar(), которая вводит единичный символ с клавиатуры. После выполнения ввода символ присваивается в качестве значения переменной с именем key. Это и есть возврат значения.

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

main()

{

charletter;

letter = getlet();

putchar('\n');

printf("Вы ввели символ %c", letter);

}

chargetlet()

{

printf("Введите символ: ");

return(getchar());

}

Инструкция

letter = getlet();

вызывает функцию getlet(). Эта функция принимает символ с клавиатуры и возвращает его переменной letter в функции main().

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

chargetlet();

В данной инструкции мы указали компилятору, что значение, возвращаемое функцией getlet(), относится к символьному типу. Значение, которое будет возвращено, указывается в круглых скобках после ключевого слова return(). Инструкция, записанная в строке

return(getchar());

выполняет большую часть работы. Запомните, что функция getchar() в инструкциях применяется там, где возможно использование выражения или некоторого значения. В рассматриваемой программе функция getchar() вводит символ, затем инструкция return() после выполнения функции printf() передает символ назад, присваивая его переменной letter, и возвращает управление в main().

Замечания по Си++

Если компилятор Си следует стандарту ANSI, вы должны указать тип функции даже в том случае, если функция не возвращает никаких значений. При этом тип определяется как void:

voidmyfunct()

Эта информация говорит компилятору, что функция не будет возвращать вызывающей функции никакого значения. В Си++ введение ключевого слова void является не обязательным, но желательным.

Рис. 7. Программа, иллюстрирующая возврат значения из функции

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

Давайте теперь рассмотрим программу, в которой значение и передается, и возвращается. Программа, изображенная на рис.7, вводит с клавиатуры значение в переменную, а затем выводит на экран квадрат этого значения.

Инструкция

number = square(value);

вызывает функцию square(), передавая ей значение переменной value. Определение функции как i

ntsquare(num)

сообщает компилятору Си, что square() возвращает целочисленное значение и что она получит аргумент в переменную num. В этом примере return() является только инструкцией функции. Строка

return(num * num)

возвращает значение выражения num * num, записывая его в переменную number, которой присвоен вызов функции square() в main().

Замечания по Си++

При работе с компиляторами языка Си++ (и некоторыми Си-компиляторами) желательно начинать программу с прототипов функций. Прототип — это строка определения функции, повторенная в начале программы перед main(). Выглядит она так:

voidsquare(intnum);

main()

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

Замечания по Си++

Перегрузка — это процесс в Си++, позволяющий операторам и функциям работать одновременно с данными разных типов. Можно использовать одно и то же имя для нескольких функций, как показано в следующих прототипах:

int doubles(intnum);

float doubles(float num);

В программе будут присутствовать две функции doubles(), одна из которых удваивает значения данных типа int, а другая — данных типа float.