4.6.4 Возврат Значения

4.6.4 Возврат Значения

Из функции, которая не описана как void, можно (и долно) возвращать значение. Возвращаемое значение задается опратором return. Например:

int fac(int n) (*return (n»1) ? n*fac(n-1) : 1; *)

В функции может быть больше одного оператора return: int fac(int n) (* if (n » 1) return n*fac(n-1); else return 1; *)

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

double f() (* // ... return 1; // неявно преобразуется к double(1) *)

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

int* f() (* int local = 1; // ... return amp;local; // так не делайте *)

Эта ошибка менее обычна, чем эквивалентная ошибка при использовании ссылок:

int amp; f() (* int local = 1; // ... return local; // так не делайте *)

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

int amp; f() (* return 1;*) // так не делайте

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Выполнение процедуры завершения и возврат из функции дежурного ожидания

Из книги автора

Выполнение процедуры завершения и возврат из функции дежурного ожидания По окончании выполнения операции расширенного ввода/вывода связанная с ней процедура завершения со своими аргументами, определяющими структуру OVERLAPPED, счетчик байтов и код ошибки, помещается в


Переход в приостановленное состояние и возврат к выполнению

Из книги автора

Переход в приостановленное состояние и возврат к выполнению Приостановленное состояние задачи (состояние ожидания, заблокированное состояние, sleeping, blocked) представляет собой специальное состояние задачи, в котором задание не выполняется. Это является очень важным, так


Возврат результата потока

Из книги автора

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


Возврат товара

Из книги автора

Возврат товара Очень интересный момент, который обязательно надо обговорить. Во всех интернет-магазинах свои правила возврата товара, но российское законодательство все равно прописывает общие правила для всех. Если вы получили товар ненадлежащего качества, то мнения


Возврат товара

Из книги автора

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


ГЛАВА 4. ВОЗВРАТ И ОТСЕЧЕНИЕ

Из книги автора

ГЛАВА 4. ВОЗВРАТ И ОТСЕЧЕНИЕ Давайте подытожим всю информацию, которую мы почерпнули в гл. 1 и 2 о том, что может произойти с целевым утверждением (целью).1. Может иметь место попытка доказать согласованность целевого утверждения с базой данных. В процессе доказательства


Урок № 48. Возврат ТМЦ поставщику

Из книги автора

Урок № 48. Возврат ТМЦ поставщику Возврат товарно-материальных ценностей поставщику – операция, встречающаяся довольно часто. Кто-то возвращает товары по причине невозможности рассчитаться за них, кто-то – из-за снижения покупательского спроса, кто-то хочет вернуть


Урок № 55. Возврат товаров от покупателей

Из книги автора

Урок № 55. Возврат товаров от покупателей Для оформления возврата товарно-материальных ценностей от покупателей в программе предназначен документ "Возврат товаров от покупателя". Для перехода в режим работы с этими документами нужно выполнить команду главного меню


Урок № 69. Возврат спецодежды, спецоснастки и инвентаря из эксплуатации

Из книги автора

Урок № 69. Возврат спецодежды, спецоснастки и инвентаря из эксплуатации Переданные в эксплуатацию ценности могут возвращаться обратно на склад, с которого они ранее были выданы. Для отражения в учете этой операции в программе "1С:Бухгалтерия 8" предназначен документ,


1. Пустые значения (Empty-значения)

Из книги автора

1. Пустые значения (Empty-значения) Пустое значение – это просто одно из множества возможных значений какого-то вполне определенного типа данных.Перечислим наиболее «естественные», непосредственные пустые значения (т. е. пустые значения, которые мы могли бы выделить


2. Неопределенные значения ( Null-значения)

Из книги автора

2. Неопределенные значения (Null-значения) Слово Null используется для обозначения неопределенных значений в базах данных.Чтобы лучше понять, какие значения понимаются под неопределенными, рассмотрим таблицу, являющуюся фрагментом базы данных: Итак, неопределенное


4.6.4 Возврат Значения

Из книги автора

4.6.4 Возврат Значения Из функции, которая не описана как void, можно (и долно) возвращать значение. Возвращаемое значение задается опратором return. Например:int fac(int n) (*return (n»1) ? n*fac(n-1) : 1; *)В функции может быть больше одного оператора return: int fac(int n) (* if (n » 1) return n*fac(n-1); else return 1; *)Как и


19.4. Возврат значения функции

Из книги автора

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