Неявно заданные параметры функции

Описание и вызов

Функции

Функции объявляются следующим образом:

[модификаторы] возвращаемый_тип имя_функции (список_формальных_параметров)

{

ТЕЛО ФУНКЦИИ

}

список формальных параметров представляет собой перечисление через запятую пар «тип данного» — «имя переменной» (имя переменной может отсутствовать).

В соответствии со стандартом ANSI C возвращаемый тип int может быть опущен. В C99 и С++ указание типа обязательно.

Для функции, которая не возвращает значения (аналог процедуры в «Паскале»), предусмотрен тип данных void.

Функции, возвращающие значение (возвращаемый тип для которых отличен от void), должны обязательно содержать оператор "return возвращаемые_данные". На данном операторе происходит возврат из функции независимо от того, есть ли дальше другие операторы.

Пример

int sum(int x, int y)

{

return x+y;

}

Для функций типа void можно использовать оператор return без аргументов для явного возврата (выхода) из функции в требуемом месте.

Описание функции обязательно должно быть раньше (выше) в тексте программы, чем любой её вызов. Функция может быть описана без реализации. Такое описание называют «прототип функции» (в литературе также можно встретить термин «упреждающее описание»). В этом случае тело функции не записывают, а после описания её заголовка ставят «;». Также при упреждающем описании можно не указывать имена переменных. Реализация функции должна обязательно присутствовать далее в тексте программы, возможно, в другом файле.

Пример

void myfunc(int, int);

// здесь продолжение кода с вызовом myfunc

void myfunc(int x, int y) {…}

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

Пример

void myfunc(int a,int b) //описание

{...}

int main(void)

{

myfunc(x,5); //вызов

void *t = myfunc; //применение в качестве указателя

}

Допустимо явно не указывать параметры функции, для этого используется многоточие в конце списка параметров. В этом случае компилятор контролирует только явно указанные аргументы. Никаких специальных базовых средств по работе с неявно указанными параметрами функции языки «С» и «С++» не предоставляют, но известно, что переданные фактические параметры располагаются в памяти (в стеке) последовательно после явно указанных.

Функции и типы данных для работы с неявно заданными параметрами определены в библиотеке stdarg.h.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: