Раздел «Язык Си».CoffeeFunction:

Функция - именованный кусок кода с параметрами.

declaration, definition, call

IDEA! Нельзя определить две функции с одинаковыми именами.

Определение функции (definition)

Описываем имя функции, какие у нее аргументы (параметры), какой тип данных она возвращает и какие инструкции выполняет.

тип_возвращаемого_значения имя_функции (список параметров через запятую) {
    декларации локальных переменных
    инструкции
}

/* Начало определения функции с именем power, которая возводит основание а в целую положительную степень n */
long int power (int a, unsigned int n)
{
    long int res;
    unsigned int i;
    for (i=0, res=1; i<n; i++) {
        res = res * a;
    }
    return res;   // Возвращается из функции число, равное значению переменной res
}
/* конец определения функции power */

Реализация функции.

Прототип функции (declaration)

Прототип функции - это определение функции без описания ее тела. Вместо них ставится точка с запятой.

тип_возвращаемого_значения имя_функции (список параметров через запятую) ;

long int power (int a, unsigned int n); // прототип функции power, возводящей а в n

Обещание компилятору, что когда-то мы определим функцию с таким именем, типом возвращаемого значения и этими параметрами.

Если обещание не выполнили, и нигде реализации нет, то linker выдаст ошибку.

IDEA! Название параметров можно опустить и оставить только перечисление типов через запятую.

IDEA! Некоторые компиляторы требуют void в параметрах, если их нет.

Вызов функции (call) - ее использование

int main()
{
    long y;
    y = power (2, 3);   // вызов (использование) функции power
    return 0;
}

Запоминаем

Eng Rus C Аналогия
declaration прототип int abs(int); мечтаем о самокате
definition определение
реализация
int abs(int x) {
  if (x<0)
    return -x;
  return x;
}
делаем самокат
call вызов
использование
y = abs(x+3); катаемся на самокате

Не путайте функции с вводом данных с клавиатуры /выводом на экран.

Философские размышления после дополнительных вопросов. sin(0) в данном случае 0 аргумент. Значение из функции возвращают с помощью оператора return. Например, return 1; передаст управление из той функции, где мы сейчас находимся обратно в точку вызова и значение функции будет 1.

-- TatyanaDerbysheva - 20 Oct 2013