Functions
Функция — это конструкция языка 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 (since 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; }
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
-
- 6.7.7.4 Деклараторы функций (включая прототипы) (стр.: TBD)
-
- 6.9.2 Определения функций (стр.: TBD)
- Стандарт 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++
для
Объявления функций
|