Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Моя первая программа на С++.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

Введите стоимость единицы товара: 100

ведите величину скидки (в виде десятичной дроби): 0.05

Стоимость с учетом скидки составляет 95 долларов

Предположим, что случайно вы изменили вызов функции следующим образом:

price(discount, cost);

Компилятор не сообщит об ошибке, так как значения двух переменных типа float передаются двум аргу- ментам типа float. К несчастью, они передаются не тем аргументам, каким положено: значение discount будет передано amount, а значение cost— mrkdown.

Если теперь присвоить переменной cost значение 100, а переменной discount значение 0.05, функция пе- реставит их и будет считать, что цена равна пяти центам, а размер скидки составляет 10000 процентов. В результате мы увидим, что товар имеет отрицательную стоимость в размере –4.95доллара, вместо 95.50.

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

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

key = getchar();

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

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

main()

{

char letter; letter = getlet();

¶a++ae æepcue u+uru æɵuyye+a sneuwpo++ɵu usgawenacwæou "Books-shop".

Pacupocwpa+e+ue, upogaua, uepesauuca ga++on u+uru unu ee ¬acwen 3AMPE[EHª.

O æcex +apyue+uex upoca6a coo6yawa uo agpecy piracy@books-shop.com

putchar('\n');

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

}

char getlet()

{

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

}

Инструкция

letter = getlet();

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

letter в функции main().

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

char getlet();

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

return(getchar());

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

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

символ, затем инструкция return() после выполнения функции printf() передает символ назад, присваивая его переменной letter, и возвращает управление в main().

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

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

Инструкция

number = square(value);

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

int square(num)

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

return(num * num)

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