Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы ОП.docx
Скачиваний:
1
Добавлен:
30.07.2019
Размер:
293.73 Кб
Скачать

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

может указываться до вызова функции вместо описания функции для того, чтобы компилятор мог выполнить проверку соответствия типов аргу­ментов и параметров. Прототип функции по форме такой же, как и заголовок функции, в конце его ставится «;». Формальные параметры функции в прототипе могут иметь имена, но компилятору они не нужны.

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

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

Вызов функции

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

имя_функции (список_фактических_параметров);

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

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

35. Получение нескольких результатов в функциях. Пример.

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

Ссылочный параметр — это псевдоним соответствующего аргумента. Чтобы показать, что параметр функции передан по ссылке, после типа параметра в прототипе функции ставится символ амперсанда (& — операция взятия адреса); такое же обозначение используется в списке типов параметров в заголовке функции. Например, объявление

int ∑

в заголовке функции может читаться как «sum является ссылкой на int». В вызове функции достаточно указать имя переменной и она будет передана по ссылке. Тогда упоминание в теле вызываемой функции переменной по имени ее параметра в действительности является обращением к исходной переменной вызывающей функции и эта переменная может быть изменена непосредственно вызываемой функцией.

36. Формальные и фактические параметры функции. Пример.

Параметры, перечисленные в заголовке описания функции, называются формальными параметрами, или просто параметрами

Параметры, записанные в операторе вызова функции — фактическими параметрами, или аргументами.

37. Передача параметров по значению и по адресу. Пример.

  • по значению

  • по адресу

38. Области действия переменных. Понятия область видимости и область существования переменной. Пример.

В языке C++ возможны три места объявления переменных:

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

  1. Переменная может быть объявлена внутри блока, в том числе и внутри тела функции. Объявленная таким образом переменная называется локальной и может использоваться только внутри блока. Такая переменная вне блока, в котором она объявлена, не известна.

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

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

Структура данных — это некоторая структура, содержащая данные.

Различают динамические и статические типы данных.

Статическая структура данных имеет фиксированный тип и размер. Для ее изменения программист должен изменить исходный код программы. В то время как размер (а иногда и тип) динамической структуры данных может изменяться в процессе выполнения программы.

Массив представляет собой упорядоченный набор однотипных элементов. Массивы бывают одномерными и многомерными.

Одномерные массивы (вектора) — это конечная именованная последовательность элементов. Элементы массива занимают в памяти один непрерывный участок памяти и располагаются последовательно друг за другом. Для доступа к отдельному элементу массива указывают имя массива и номер позиции отдельного элемента массива (индекс). Индекс должен быть целым числом или целым выражением. Индексация элементов массива начинается с нуля. На рисунке показан вектор A целых чисел.

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