Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Определение (описание) функции




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

Схема:

Тип_результата Имя_функции (Тип_пар1 Имя_пар1, Тип_пар2 Имя_пар2,...) { Оператор1; Оператор2;... ОператорN; return n;};
  • Имя_парN — уникальное внутри функции имя N-ro параметра. Имена параметров можно задавать и в прототипе функции, тогда в определении надо использовать те же имена.
  • ОператорN — некоторые операторы и выражения, содержащиеся внутри функции и выполняющиеся каждый раз при вызове функции. Внутри операторов мы можем обращаться к глобальным объектам программы; к локальным объектам, объявленным внутри функции; а также к аргументам функции.
  • return n — оператор, останавливающий работу функции и возвращающий n в качестве её значения (при этом тип n должен соответствовать типу результата в объявлении функции). Наличие этого оператора обязательно для функции возвращающей значение. Для функции объявленной как void можно вызывать оператор return без аргументов, это досрочно завершит функцию, иначе — будут выполнены все действия до конца блока описания функции.

Блок определения функции называется также её телом.

Одна функция не может объявляться или определяться внутри другой (т.е. нельзя объявлять и определять функции внутри main).

Пример объявления и описания функции:

int max (int, int);int max (int n1,int n2) { if(nl > n2) { return n1; } else { return n2; }} int main(void) { int а = 100 - max(10,20); cout << a; return 0;}

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

Пример:

double cube (double a) { return a*a*a;} int main(void) { double pi = 3.1415; cout << cube(pi); return 0;}

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

Пример:

double cube (double);int main(void) { double pi = 3.1415; cout << cube(pi); return 0;} double cube (double a) { return a*a*a;}

Типы функций

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

Библиотеки подключается при помощи директивы препроцессора #include. После директивы препроцессора указывается имя библиотеки или имя заголовочного файла библиотеки. Имя заключается в угловые скобки (для стандартных библиотек) или в двойные кавычки (для остальных библиотек).

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

#include "math.h"

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

Встраиваемые функции

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

Встраиваемая функция описывается точно также, как и обычная, но ее заголовок предваряется служебным словом inline:

inline int swap(int a, int b){ a = a+b; b = a-b; a = a-b;}

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

 





Поделиться с друзьями:


Дата добавления: 2016-09-03; Мы поможем в написании ваших работ!; просмотров: 352 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Начинать всегда стоит с того, что сеет сомнения. © Борис Стругацкий
==> читать все изречения...

2298 - | 2047 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.