Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора3.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
214.02 Кб
Скачать

43. Вызовы функций

Вызов функции имеет следующий формат:

Выражение ([список-выражений])

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

Выполнение вызова функции происходит следующим образом:

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

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

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

2. Происходит замена формальных параметров на фактические. Первое выражение в списке всегда соответствует первому формальному параметру, второе – второму и т.д.

3.Управление передается на первый оператор функции.

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

44. Массивы и параметры

Массивы являющиеся параметром функции можно задать двумя способами:

1.для параметра в виде массива с фиксированным размером указывается число элементов массива при объявлении параметра;

2.для параметра в виде массива с одним и тем же типом данных, но различным числом элементов используются квадратные скобки, следующие за именем массива.

Многомерные динамические массивы

ногомерный массив в C++ по своей сути одномерен. Операции new[] и delete[] позволяют создавать и удалять динамические массивы, поддерживая при этом иллюзию произвольной размерности. Деятельность по организации динамического массива требует дополнительного внимания, которое окупается важным преимуществом: характеристики массива (операнды операции new) могут не быть константными выражениями. Это позволяет создавать многомерные динамические массивы произвольной конфигурации

48. Объявление функции

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

[спецификатор-класса памяти][спецификатор-типа]

описатель ([список формальных параметров])[,список описателей];

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

Прототип функции нужно задавать в следующих случаях:

•функция возвращает значение типа, отличного от int

•указатель на функцию должен быть проинициализирован до того, как функция будет определена.

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

Вставляемые (inline) функции

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

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