Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на экзаменационные вопросы(все развернут....doc
Скачиваний:
6
Добавлен:
13.04.2019
Размер:
1.28 Mб
Скачать

Программа может передавать информацию в функции

Для увеличения потенциальных возможностей ваших функций C++ позволяет программам передавать информацию (параметры) в функции. Если функция использует параметры, вы должны сообщить C++ тип каждого параметра, например int, float, char и т.д.

#include <iostream.h>

void show_number (int value)

{     cout << "Значение параметра равно " << value << endl;  }

void main (void)

{     show_number (1);     show_number (1001);     show_number (-532);  }

Функции используют оператор return для возврата значения вызвавшей функции.

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

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

Использование прототипов функций

Прототип функции сообщает компилятору C++ тип возвращаемого значения, а также количество и тип параметров функции. Когда вы компилируете вашу программу, компилятор C++ использует прототип каждой функции, чтобы убедиться, что вы не перепутали тип возвращаемого функцией значения (например, не присваиваете возвращаемое значение типа float переменной типа int) и что вы не передаете в качестве параметра значение неверного типа. Раньше многие компиляторы C++ не выполняли подобную проверку. В результате программисты часто тратили часы, пытаясь найти ошибки, возникающие из-за того, что вместо ожидаемого значения типа float в функцию передавалось значение типа int. Если вы встречаете синтаксическую ошибку, которая возникает из-за противоречия с прототипом функции, будьте благодарны. В прошлом компилятор не определял подобную ошибку, и ваша программа просто не работала.

  1. Понятие функции; параметры функции. Прототипы функций.

Функция – это последовательность описаний и операторов, сгруппированных для решения конкретной задачи.

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

Функция должна быть объявлена, а затем определена.

Объявление функции (function declaration) сообщает компилятору ее имя, тип возвращаемого значения и параметров.

Объявление функции называется прототипом (prototype). Прототип - это выражение, состоящее из типа возвращаемого функцией значения, ее имени и списка параметров.

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

[класс] тип имя ([список параметров])

{тело функции}

В тексте программы либо саму функцию, либо ее прототип располагают до главной функции main.

Список параметров определяет величины, которые требуется передать в функцию при ее вызове. Элементы списка параметров разделяются запятыми. Для каждого параметра, предаваемого в функцию указывается его тип и имя ( в объявлении имена можно опускать).

Формальные параметры – это параметры, перечисленные в заголовке описания функции.

Фактические параметры ( или аргументы) – это параметры, записанные в операторе вызова функции.

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

  1. Область действия переменной.

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

О локальных переменных

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

О глобальных переменных

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