Функции
Функция это конструкция C, которая связывает составную инструкцию (тело цикла) с идентификатором (имя функции). Каждая программа на C начинает выполнение с функции main, которая либо завершается, либо вызывает другие определённые пользователем или библиотечные функции.
// определение функции.
// определяет функцию с именем "sum" и телом "{ return x+y; }"
int sum(int x, int y)
{
return x + y;
}
Функция может принимать ноль или больше параметром, которые инициализируются аргументами оператора вызова функции, и может возвращать значение вызывавшему средствами инструкции return.
int n = sum(1, 2); // параметры x и y инициализированы аргументами 1 и 2
Тело функции предоставляется в определении функции. Каждая не inline (начиная с C99)-функция, которая используется в выражении (за исключением невычисляемого), должна быть определена единожды в программе.
Не существует вложенных функций (за исключением случаев нестандартных расширений компиляторов): каждое определение функции должно появляться в области видимости файла, и функции не имеют доступа к локальным переменным вызывавшего их:
int main(void) // определение функции main
{
int sum(int, int); // объявление функции (может появляться в любой области видимости)
int x = 1; // локальная переменная в main
sum(1, 2); // вызов функции
// int sum(int a, int b) // ошибка: нет вложенных функций
// {
// return a + b;
// }
}
int sum(int a, int b) // определение функции
{
// return x + a + b; // ошибка: x из main не доступна внутри sum
return a + b;
}
Ссылки
- Стандарт C17 (ISO/IEC 9899:2018):
- 6.7.6.3 Деклараторы функций (включая прототипы) (стр. 96-98)
- 6.9.1 Определения функций (стр. 113-115)
- Стандарт C11 (ISO/IEC 9899:2011):
- 6.7.6.3 Деклараторы функций (включая прототипы) (стр. 133-136)
- 6.9.1 Определения функций (стр. 156-158)
- Стандарт C99 (ISO/IEC 9899:1999):
- 6.7.5.3 Деклараторы функций (включая прототипы) (стр. 118-121)
- 6.9.1 Определения функций (стр. 141-143)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
- 3.5.4.3 Деклараторы функций (включая прототипы)
- 3.7.1 Определения функций
См. также
Документация C++ по объявлениям функций
|