
- •6.1. Общая форма определения функции
- •6.2. Создание функции
- •6.3. Использование аргументов
- •6.4. Прототипы функций
- •6.5. Использование предложения return
- •6.6. Использование функций в выражениях
- •6.7. Основы техники указателей
- •6.7.1. Объявление указателей
- •6.7.2. Операторы указателей
- •6.8. Передача в функции указателей
- •6.9. Передача в функции массивов
- •6.9.1. Указатели и массивы
- •6.9.2. Способы передачи в функции массивов
- •6.10. Передача в функцию строк
- •6.10.1.Строковые константы
- •6.10.2. Передача строк
- •6.11. Возврат указателей
Лабораторная работа 6. Основы функций
Цели, достигаемые в этой работе
6.1. Познакомиться с общей формой определения функции
6.2. Научиться создавать собственные функции
6.3. Освоить использование аргументов функции
6.4. Освоить использование прототипа функции
6.5. Понять, что такое возвращаемое функцией значение
6.6. Научиться использовать функции в выражениях
6.7. Освоить основы техники указателей
6.8. Освоить передачу в функцию указателей
6.9. Освоить передачу в функцию массивов
6.10. Освоить передачу в функцию строк
6.11. Освоить возврат из функции указателей
6.1. Общая форма определения функции
Функцией называется подпрограмма, содержащая одно или больше предложений С++ и выполняющая конкретную задачу.
Все функции С++ имеют общую форму, приведенную ниже:
тип-возврата имя(список-параметров)
{
// тело функции
}
Здесь тип-возврата определяет тип данного, возвращаемого функцией. Функция может возвращать любой тип за исключением массива. Если функция ничего не возвращает, то тип возврата должен быть void. Имя функции определяется элементом имя. В качестве имени может использоваться любой допустимый идентификатор, если он еще не занят. список-параметров представляет собой последовательность пар типов и идентификаторов, разделяемых запятыми. Параметры – это переменные, которые получают значения аргументов, передаваемых функции при ее вызове. Если функция не требует параметров, список параметров будет пуст.
Фигурные скобки окружают тело функции. Тело функции состоит из предложений С++, определяющих, что именно эта функция делает. Когда по ходу этих предложений встречается закрывающая фигурная скобка, функция завершается, и управление передается вызывающему коду.
6.2. Создание функции
Поскольку все функции имеют общую форму, они все структурно схожи с функцией main().
. Ниже приведен пример определения функции с именем myfunc(), которая выводит строку на экран.
void myfunc()
{
cout << "Внутри myfunc () \n";
}
Ключевое слово void, которое указывается как перед именем формально устанавливает, что myfunc() не возвращает никакого значения. В С++ функции, не вращающие значения, объявляются void.
Приведенная ниже программа демонстрирует использование функции myfunc():
//Эта программа содержит две функции: main() и myfunc().
#include <iostream>
using namespace std;
// Это определение myfunc()
void myfunc()
{
cout << "Внутри myfunc () \n";
}
int main ()
{
cout << "B main()\n";
myfunc () ; // вызов myfunc()
cout << "Снова в main()\n";
return 0;
}
Программа работает следующим образом. Начинается все с функции main(), в которой выполняется первое предложение cout. Затем main() вызывает функцию myfunc(). Посмотрите, как это делается: указывается имя функции, за которым стоит пара круглых скобок. В данном случае вызов функции представляет собой предложение, и всякое предложение, оно должно заканчиваться точкой с запятой. Далее myfunc() выполняет предложение cout и, встретив закрывающую фигурную скобку }, возвращается в main(). В main() выполнение возобновляется на той строке кода, которая непосредственно следует за вызовом myfunc(). Наконец, main() выполняет второе предложение cout и завершается. Вот вывод этой программы:
В main()
Внутри myfunc()
Снова в main()
Способ, которым вызывается mytunc(), и способ, которым ocyществляется возврат в main(), являются типичными представителями процедуры, приложимой ко всем функциям. Для вызова функции следует указать ее имя с парой круглых скобок. Когда вызывается функция, управление передается в эту функцию. Далее выполнение продолжается внутри функции, пока не встретится закрывающая фигурная скобка. Завершение работы функции приводит к передаче управления на вызывающий код на то предложение, которое стоит непосредственно за вызовом функции.