Структура программы на языке Си : блоки, функция main

Структура программы на языке Си

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

Язык Си является блочно-структурированным. Каждый блок заключается в фигурные скобки {}.

Основным блоком в программе консольного приложения на языке Си является главная функция, имеющая имя main().

Каждое действие в языке Си заканчивается символом «точка с запятой» — ;. В качестве действия может выступать вызов функции или осуществление некоторых операций.

Имя функции — это коллективное имя группы описаний и операторов, заключенных в блок (фигурные скобки). За именем функции в круглых скобках указываются параметры функции.

Комментарии в языке Си

В языке Си  для комментариев используются символы

  • /* — начало комментария;
  • */ — конец комментария.

Вся последовательность, заключенная между этими символами, является комментарием.

Это удобно для написания многострочных комментариев:

 
 
int a;   /* целая
переменная */

В дополнение к этому, для написания коротких комментариев могут использоваться символы //. При этом комментарием является все, что расположено после символов // и до конца строки:

 
float b; // вещественная переменная

Главная функция

При выполнении консольного приложения, написанного на языке Си, операционная система компьютера передаёт управление функции с именем main(). Функцию main() нельзя вызывать из других функций программы, она является управляющей.

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

Главную функцию можно записать по-разному:

  • int main()
  • void main().

Первый вариант используется когда программа запускается из-под операционной системы. При этом перед именем функции указывается тип возвращаемого значения. При обращении к главной функции значение возвращается операционной системе. При этом запись int main() сообщает компилятору о возвращении целочисленного значения, которое необходимо операционной системе и сообщает ей о том, что программа завершилась корректно. В случае корректного завершения возвращается значение 0. Если целочисленное значение отлично от 0, то операционная система понимает, что программа завершилась в аварийном режиме. Для возврата целочисленного значения перед завершением функции добавляется строка

 
return 0;

Последняя запись не будет возвращать значения. void main() сообщает компилятору, что функция main() не возвращает никакого значения. Такой вариант записи используется, например, в программах для микроконтроллеров, где не предусмотрен выход из программы, а сама программа состоит из инициализации и бесконечного цикла.

В фигурные скобки заключены описания и операторы.

В общем случае программа может содержать несколько функций. Каждая функция имеет список передаваемых в нее параметров, указанный в круглых скобках, и набор операций, заключенных в блок, ограниченный фигурными скобками.

Пример: Вывод на экран сообщения «Hello, world!».

1
2
3
4
5
6
7
#include  <stdio.h> // Подключение библиотеки ввода-вывода
int main()         // Главная функция
{
  printf("Hello, world!"); // Вывод сообщения
  getchar();               // Задержка окна консоли
  return 0;
}

Результат работы программы:

Результат работы Hello World

Теперь попробуем написать текст на русском языке.

1
2
3
4
5
6
7
#include <stdio.h>
int main()
{
  printf("Здравствуй, мир!");
  getchar();
  return 0;
}

Результат работы программы:
Результат программы Здравствуй мир

Проблема русского языка в консольных приложениях заключается в том, что консоль и редактор кода Microsoft Visual Studio поддерживают разные кодовые страницы. Для того, чтобы увидеть русские символы в консоли необходимо поменять кодовую страницу в консоли, чтобы она соответствовала кодовой странице редактора (1251). С этой целью вызывается функция system("chcp 1251") с соответствующей командной строкой. Прототип функции system() содержится в библиотеке <stdlib.h>.

При этом текст программы будет выглядеть следующим образом:

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <stdlib.h>
int main()
{
  system(&qout;chcp 1251");        // Текущая кодовая страница 1251
  system("cls");              // Очистка консоли
  printf("Здравствуй, мир!"); // Вывод сообщения
  getchar();
  return 0;
}

Результат работы программы:
Результат программы Здравствуй мир
Прокрутить вверх