Программа на языке Си — это набор функций и объявлений данных, содержащийся в одном или более файлах. Одна из этих функций — функция main().
Функция — это именованный фрагмент программы. Данные могут передаваться в функцию и функция может возвращать значение.
Программа на языке Си состоит из функций, произвольным образом упорядоченных в файле. Фактически функции могут быть размещены и в разных файлах. Концепция функции в языке Си покрывает все типы подпрограмм в других языках программирования: функции и процедуры.
Функции позволяют писать модульные программы, в которых каждая функция выполняет собственную задачу. Функции обычно невелики (страница или меньше, могут быть и однострочные).
Функции позволяют избежать дублирования кода в одной программе. Кроме того, несколько программ могут совместно использовать код функции.
Программы легче читаются, так как детали “скрыты” внутри функций.
Программы легче пишутся, поскольку функции позволяют разбить большие задачи на задачи меньшего размера, более простые для решения.
Выполнение программы всегда начинается с функции main(). Обычно функция main() располагается в начале файла. Порядок расположения функций в файле не имеет значения. Часто они располагаются в алфавитном порядке для удобства поиска при модификации программы.
Пример 1
Структура программы на языке Си:
объявления
int main(...)/*определение прототипа функции*/
 {
  объявления

  операторы
 }

объявления
int f(...) /*определение прототипа функции*/
 {
  объявления

  операторы
 }

void g(...)/*определение прототипа функции*/
 {
   объявления

   операторы
 }
Примечание 1
Определения прототипов функций не могут быть вложенными.
Язык Си использует свободный, а не позиционный формат расположения программы, что делает несущественным позиции размещения элементов программы. При чтении текста программы на Си компилятор распознает лексемы, разделенные символами промежутков (пробелы, знаки табуляции и символы перевода строки). Как правило, символы промежутков игнорируются.
Имя файла, содержащего программу на языке Си должно оканчиваться расширением .
Минимальная программа на языке Си
Минимальная программа на языке Си должна включать функцию с именем main(). В начале выполнения программы управление из операционной системы всегда передается функции main().
Примеры минимальной программы, допустимые с точки зрения синтаксиса, но ничего не делающие:
int main ( )
{
}
или
int main ( ){}
или
int main
(
 )
{
}