ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Функции. Определение функции, объявление функции и вызов функции. Возвращаемое значение функции.В языке Си любая подпрограмма – функция, представляющая собой отдельный программный модуль, к которому можно обратиться в любой момент и (в случае необходимости) передавать через параметры некото- рые исходные данные и который (в случае необходимости) способен возвращать один или несколько результатов своей работы. Декларация функции Как объект языка Си, функцию необходимо объявить. Объявление функции пользователя, т.е. ее декларация, выполняется в двух формах – в форме описания и форме определения. Описание функции заключается в приведении в начале программного файла ее прототипа. Прототип функции сообщает компилятору о том, что далее в тексте программы будет приведено ее полное определение (полный ее текст): в текущем или другом файле исходного текста либо находится в библиотеке. В стандарте языка используется следующий способ декларации функций: тип_результата ID _функции(тип переменной 1,…, тип переменной N); Заметим, что идентификаторы переменных в круглых скобках прототипауказывать необязательно, так как компилятор языка их не обрабатывает.Описание прототипа дает возможность компилятору проверить соответствие типов и количества параметров при вызове этой функции. Пример описания функции fun со списком параметров: float fun(int, float, int, int); Полное определение функции имеет следующий вид: тип_результата ID _функции (список параметров) { код функции return выражение; } Тип результата определяет тип выражения, значение которого возвращается в точку ее вызова при помощи оператора return. Если тип функции не указан, то по умолчанию предполагается тип int. Список параметров состоит из перечня типов и идентификаторов параметров, разделенных запятыми. Функция может не иметь параметров, но круглые скобки необходимы в любом случае. Если функция не возвращает значения, она описывается как функция типа void и в данном случае оператор return не ставится. В функции может быть несколько операторов return, но может и не быть ни одного. В таких случаях возврат в вызывающую программу происходит после выполнения последнего в функции оператора. Пример функции, определяющей наименьшее значение из двух целочисленных переменных: int min (int x, int y) { return (x<y)? x: y; } Все функции, возвращающие значение, должны использоваться в правой части выражений языка Си, иначе возвращаемый результат будет утерян. Если у функции отсутствует список параметров, то при декларации такой функции желательно в круглых скобках также указать ключевое слово void. Например, void main(void). В языке Си каждая функция – это отдельный блок программы, вход в который возможен только через вызов данной функции. Наличие определения функции делает излишним запись ее описания в остатке файла исходного текста. Вызов функции Вызов функции имеет следующий формат: ID _функции (список аргументов); где в качестве аргументов можно использовать константы, переменные, выражения (их значения перед вызовом функции будут определены компилятором). Аргументы списка вызова должны полностью совпадать со списком параметров вызываемой функции по количеству, порядку следования и типам соответствующих им параметров. Связь между функциями осуществляется через аргументы и возвращаемые функциями значения. Ее можно осуществить также через внешние, глобальные переменные. Функции могут располагаться в исходном файле в любом порядке. А сама исходная программа может размещаться в нескольких файлах. В языке Си аргументы при стандартном вызове функции передаются по значению, т.е. в стеке выделяется место для формальных параметров функции и в это выделенное место при ее вызове заносятся значения фактических аргументов. Затем функция использует и может изменять эти значения в стеке. При выходе из функции измененные значения теряются. Вызванная функция не может изменить значения переменных, указанных как фактические аргументы при обращении к данной функции. В случае необходимости функцию можно использовать для изменения передаваемых ей аргументов. В этом случае в качестве аргумента необходимо в вызываемую функцию передавать не значение переменной, а ее адрес. А для обращения к значению аргумента-оригинала использовать операцию «*». Не нашли, что искали? Воспользуйтесь поиском:
|