Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Bilety_programmirovanie_1-7.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.4 Mб
Скачать

57. Оператор return.

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

Оператор return завершает выполнение функции, в которой он задан, и возвращает управление в вызывающую функцию, в точку, непосредственно следующую за вызовом. Функция main передает управление операционной системе. Формат оператора:

• return; (используется только функциях типа void. Эквивалентно отсутствию оператора в конце блока.)

• return [выражение] ;

Значение выражения, если оно задано, возвращается в вызывающую функцию в качестве значения вызываемой функции. Если в какой-либо функции отсутствует оператор return, то передача управления в вызывающую функцию происходит после выполнения последнего оператора вызываемой функции. При этом возвращаемое значение не определено. Если функция не должна иметь возвращаемого значения, то ее нужно объявлять с типом void.

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

58. Прототипы функций (понятие, назначение, способы применения).

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

// прототип функции

void function(int arg1, double arg2);

// в конце определения всегда ставится точка с запятой

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

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

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

Лучше всего описание функции включить в отдельный исходный файл. После этого надо скомпилировать этот файл и получить объектный файл. Прототип следует помесить в заголовочный файл и включать его директивой #include в те исходные файлы, в которых присутствует вызов функции.

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