Функция может передавать одно значение обратно в вызывающую функцию.
Тип возвращаемого значения определяется в определении прототипа функции и объявляется в объявлении прототипа функции.
Оператора возврата returnоператор, с помощью которого функция возвращает значение в вызывающую функцию.
Синтаксис оператора возврата return:

return [выражение];

При выходе на оператор return выполняется возврат из функции так, что управление вновь передается в вызывающую функцию на оператор, следующий за вызовом. В случае если оператор return имеет выражение, значением вызова функции является значение этого выражения. Если оператор return не имеет выражения, значение вызова функции неопределено.
Функция может иметь более одного оператора return.
Пример 1
int func1(void)
{
...
if (n==0 || n==1)
   return 1;
else
   return 0;
}
Пример 2
void func2(void)
{
...
return ;
}
В прим. 1 функция func1() возвращает значение целого типа. В прим. 2 функция func2() не возвращает никакого значения.
Функция main() может использовать оператор return для возврата некоторого целого значения в родительский процесс.
Пример 3
#include <stdio.h>
int main ()
{
   int area_rect (int, int);
   int len = 50, width = 4, area;

   area = area_rect (len, width);
   printf ("Area is %d \n", area);
   return 0;
}

int area_rect (int l, int w)
{
/*площадь прямоуголника*/
   return l*w;
}