Программы на языке Си обычно состоят из некоторого числа отдельных функций (подпрограмм), среди которых должна быть одна с именем main. С этой функции начинается выполнение программы. Как правило, функции имеют небольшие размеры, и могут находиться как в одном, так и в нескольких файлах. Если функции располагаются в различных физических файлах, то для выполнения их как единой программы, необходимо собрать их в файле проекта. В языке Си запрещено определять одну функцию внутри другой, поэтому все имена функций являются глобальными. Связь между функциями осуществляется через аргументы, возвращаемые значения и внешние (глобальные) переменные. Передача значения (возврат значения) из вызванной функции в вызвавшую реализуется с помощью оператора возврата, который записывается в следующем формальном виде:
return выражение;
Таких операторов в подпрограмме может быть несколько, и тогда они фиксируют соответствующие точки выхода. Вызвавшая функция может при необходимости игнорировать возвращаемое значение. После слова return можно ничего не записывать. В этом случае вызвавшей функции никакого значения не передается. Управление передается вызвавшей функции и в случае выхода "по концу" без использования return (последняя закрывающаяся фигурная скобка ). Примеры:
#include <stdio.h>
int f1 (void) {printf("rabotaet f1()"); return 1;} //функция возвращает значение 1
void main (void) {int k=f1();}// возвращаемое значение используется
//во внешней программе
#include <stdio.h>
int f1 (int a,int b) {return a+b;} //функция принимает параметры и возвращает значение