#include <stdio.h>
int main(void)
{
    printf("hello, world\n");
}

Итак, мы выяснили, что директива #include подключает библиотеки. В случае нашего hello.c
библиотеку ввода/вывода <stdio.h>

Теперь поговорим о том из чего состоят программы в Си.

Программы в Cи состоят из функций, а те — из операторов и переменных. Функция — это кусок кода, в котором уже есть или подаются какие-то данные, а какие-то данные получаются в результате её исполнения. 

Фигурные скобки { } ограничивают тело функции — описание того, что она должна делать. 

printf() из стандартной библиотеки stdio выводит любую строку на экран. Строки заключаются в двойные кавычки, а символ “\n” означает перевод курсора на новую строку. 

Пример: функция «посчитать квадрат целого числа». Передаем функции данные, в нашем случае — число, которое нужно возвести в квадрат. Затем в ней прописывается алгоритм умножения числа на такое же число, и результат этого умножения она выдает на выходе. 

int sqr(int a)
{
return a*a;
}

int sqr(int a) — название функции. В скобках — её аргумент a, это то, что подается на вход функции. Это как переменная в уравнении. То есть, если мы хотим узнать квадрат числа 5, то мы вызовем нашу функцию в виде sqr(5) и получим результат 25. 

int — тип данных (от англ. integer — целые числа). Наша функция написана так, что мы не можем вызвать её с аргументом a = 5.5. Такая попытка выдаст ошибку, поскольку 5.5 — число дробное, а наше число должно быть целым. int перед именем функции означает тип, который должна эта функция возвращать. Он не обязательно совпадает с типом аргумента.

Пример: функция, которая отнимает от целого числа 0.5: 

double bit_less(int a)
{
double b;
b = a – 0.5;
return b;
}

int main (void) — название главной функции. В одной программе может быть много функций, но, чтобы начать её выполнять, нужна функция под названием main. Слово void в скобках означает, что у этой функции нет аргументов.

Внимание! Главная функция main всегда возвращает int, но return для неё не обязателен.

Пример функции не возвращающей значения: 

void sayhello(void)
{
printf(“hello everyone!\n”);
}

При вызове функции в главной программе, она выведет приветствие. 

Давайте напишем одну программу, в которой будет несколько функций. Тех, что мы уже создали выше. Две созданные нами функции вызовем через главную функцию main()

В Cи, как и любом языке, есть такой элемент, как комментарий или примечание в теле программы, предназначенное не для компьютера, а для понимания людей. Например, описание того, что именно делает код. Компилятор комментариев не видит. Комментирование программ — очень важный момент, поскольку порой разобраться в чужом (и даже своем) коде очень сложно. 

//пример однострочного комментария

/** а это —
 многострочного **/

Итак, вот наша программа:

#include <stdio.h>
//функция возведения в квадрат числа a
int sqr(int a){
return a*a;
}

//выводит приветствие
void test(void) {
printf ("hello everyone!\n");
}

//главная функция
int main(void)
{
test();
printf("%d\n", sqr(5));
}

Почти всё, что есть в этой программе вы уже видели. Две функции — возведения в квадрат и приветствия и главная функция main, где мы последовательно вызываем эти две функции. 

В результате выполнения программы у нас сначала выведется приветствие, на следующей строке — квадрат числа 5. Обратите внимание, функция test() вызывается с пустыми скобками, потому что её аргументы определены как void.