Spec-Zone.ru › C

Функции

Функция — это конструкция языка C, которая связывает составной оператор (тело функции) с идентификатором (именем функции). Выполнение каждой программы на C начинается с функции main, которая либо завершается, либо вызывает другие функции, определённые пользователем или предоставляемые библиотеками.

// function definition.
// defines a function with the name "sum" and with the body "{ return x+y; }"
int sum(int x, int y) 
{
    return x + y;
}

Функция вводится с помощью объявления функции или определения функции.

Функции могут принимать ноль или более параметров, которые инициализируются аргументами оператора вызова функции, и могут возвращать значение вызывающей стороне с помощью оператора return.

int n = sum(1, 2); // parameters x and y are initialized with the arguments 1 and 2

Тело функции задаётся в определении функции. Каждая не-встроенная(начиная с C99) функция, используемая в выражении (если оно не является невычисляемым), должна быть определена в программе только один раз.

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

int main(void) // the main function definition
{
    int sum(int, int); // function declaration (may appear at any scope)
    int x = 1;  // local variable in main
    sum(1, 2); // function call

//    int sum(int a, int b) // error: no nested functions
//    {
//        return  a + b; 
//    }
}
int sum(int a, int b) // function definition
{
//    return x + a + b; //  error: main's x is not accessible within sum
    return a + b;
}

Ссылки

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/language/functions

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API