Пространства имён
Варианты
Действия

Функции

Материал из cppreference.com
< c‎ | language

Функция это конструкция 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++ по объявлениям функций