Статьи
Главная » Статьи » Programming |
Основные понятия. Функция - это самостоятельная единица программы, созданная для решения конкретной задачи. Функция в языке С играет ту же роль, что и подпрограммы или процедуры в других языках. Функциями удобно пользоваться, например, если необходимо обработать один и тот же код программы. Как и переменные, функции надо объявлять (declare). Функцию необходимо объявить до её использования. Запомните это простое правило - сначала объяви, а потом используй. Каждая функция языка С имеет имя и список аргументов (формальных параметров). Основная форма описания (definition) функции имеет вид: тип <имя функции>(список параметров) Объявление (прототип) функции имеет вид: тип <имя функции>(список параметров); Обратите внимание на то, что при описании функции после заголовка функции Вызов функции делается следующим образом: <имя функции>(параметры); или <переменная>=<имя функции>(параметры); При вызове функции так же ставиться точка с запятой. Почему надо объявлять функцию до использования? Дело в том, что для правильной работы кода функции машине надо знать тип возвращаемого значения, количество и типы аргументов. При вызове какой-либо функции копии значений фактических параметров записываются в стек, в соответствии с типами указанными в ее прототипе. Затем происходит переход в вызываемую функцию. Приведем пример вызова функции, которая будет печатать строку "Вызвали функцию" на экран. /* Используем свою функцию */ #include void main(void) // Точка входа в программу function1(); // Вызов функции /* Описание функции */ } // Конец тела функции Результатом работы программы будет строка напечатанная на экране. В теле функции main() мы объявили функцию function1(), затем её вызвали. В теле нашей функции function1() мы вызываем функцию printf(). А где же объявлена функция printf() ? Если вы внимательно посмотрите текст программы, то увидите строку #include Директива препроцессора (preprocessor directive) просто вставляет текстовый файл stdio.h в текст нашей программы. Причем вставляет туда где стоит эта директива. Если вы уберете или закоментируете строку #include Обратите внимание ещё на то, что тип возвращаемого значения у нашей функции void (пусто). Это значит, что функция не будет возвращать никакого значения. Давайте рассмотрим пример в котором опишем две функции, соответственно объявим их и последовательно вызовем. Но в этом примере для одной функции мы укажем тип возвращаемого значения - int. /* Две наших функции */ #include int x; // Объявляем переменную x (глобальная переменная) void main(void) x = 10; // Присваиваем переменной x значение 10 printf("До вызова функции function2() x равно %d\n", x); function1(); // Вызываем функцию function1() printf("После вызова функции function2() x равно %d\n", x); /* Описание наших функций */ void function1(void) int function2(void) return y; // Возвращаем значение y Теперь давайте посмотрим текст программы. После строки #include В теле main() мы объявляем две функции, одна из которых может возвращать значение типа int. Далее мы присваиваем переменной x значение 10, так как x это глобальная переменная, то эта переменная будет видна функции main() т.е. функция main() может использовать эту переменную. После этого присвоения мы выводим значение x на экран. Обратите внимание на вызов функции printf() - Далее мы вызываем функцию function1(). Эта функция просто выводит строку "Сделан вызов первой функции\n" на экран и так как в строке стоит \n, то будет осуществлен переход на новую строку. В следующей строке x = function2(); переменная x принимает значение которое вернет функция function2(). Посмотрите на описание функции function2(). В теле этой функции мы объявляем переменную y, а дальше переменной y мы присваиваем значение переменной x + 10. Так как x - глобальная переменная (она видна для функции function2) все будет работать. Теперь посмотрим тело функции main() Следующей строкой после x = function2(); является строка printf("После вызова функции function2() x равно %d\n", x); которая выводи значение измененной переменной x; Функции языка С могут иметь параметры. Эти параметры передаются в функцию и там обрабатываются. Ещё раз покажем основную форму описания функции тип <имя функции>(список параметров) В списке параметров для каждого параметра должен быть указан тип. Давайте рассмотрим все это на примере. Пусть у нас будет функция у которой присутствует один параметр x. Функция будет возвращать квадрат значения x. int square(int x) Теперь давайте рассмотри пример функции, которая будет выводить значение переменной z типа float на экран. void myout(float z) // Переменная z является формальным параметром. Формальные и фактические параметры Формальные параметры - это параметры которые мы объявляем в заголовке функции при описании. Фактические параметры - это параметры которые мы подставляем при вызове функции. void myfunc(int x); // Объявление функции // Описание функции В языке С функция может возвращать несколько значений. Чтобы функция могла вернуть несколько значений необходимо пользоваться указателями. Этот механизм называется - передача параметров по ссылке. Указатели это сложная тема, которую мы подробно распишем на следующих уроках.
| |
Просмотров: 790 | Комментарии: 1 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |