Namespaces
Variants

Functions

From cppreference.net

Функция — это конструкция языка 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++ для Объявления функций