Программа на языке Си состоит из одной или более подпрограмм, называемых функциями.
Язык Си является блочно-структурированным. Каждый блок заключается в фигурные скобки {}.
Основным блоком в программе консольного приложения на языке Си является главная функция, имеющая имя main().
Каждое действие в языке Си заканчивается символом «точка с запятой» — ;. В качестве действия может выступать вызов функции или осуществление некоторых операций.
Имя функции — это коллективное имя группы описаний и операторов,
заключенных в блок (фигурные скобки). За именем функции в круглых скобках указываются параметры функции.
Комментарии в языке Си
В языке Си для комментариев используются символы
/* — начало комментария;
*/ — конец комментария.
Вся последовательность, заключенная между этими символами, является комментарием.
Это удобно для написания многострочных комментариев:
переменная */
Многострочные комментарии также удобно использовать при отладке для сокрытия от выполнения части кода.
В дополнение к этому, для написания коротких комментариев могут использоваться символы //. При этом комментарием является все, что расположено после символов // и до конца строки:
Главная функция
При выполнении консольного приложения, написанного на языке Си, операционная система компьютера передаёт управление функции с именем main(). Функцию main() нельзя вызывать из других функций программы, она является управляющей.
Следующие за именем функции круглые скобки предназначены для указания параметров (аргументов), которые передаются в функцию при обращении к ней. В данном случае операционная система не передаёт в функцию main() никаких аргументов, поэтому список аргументов в круглых скобках пустой.
Главную функцию можно записать по-разному:
- int main()
- void main().
Перед именем функции указывается тип возвращаемого значения. При обращении к главной функции значение возвращается операционной системе. Последняя запись не будет возвращать значения. Однако void main() — не совсем корректная запись, так как сообщает компилятору, что функция main() не возвращает никакого значения.
При этом запись int main() сообщает компилятору о возвращении целочисленного значения, которое необходимо операционной системе и сообщает ей о том, что программа завершилась корректно. Если же это значение не возвращено, то операционная система понимает, что программа завершилась в аварийном режиме.
Для возврата целочисленного значения перед завершением функции добавляется строка
В фигурные скобки заключены описания и операторы.
В общем случае программа может содержать несколько функций. Каждая функция имеет список передаваемых в нее параметров, указанный в круглых скобках, и набор операций, заключенных в блок, ограниченный фигурными скобками.
Пример: Вывод на экран сообщения "Hello, world!".
2
3
4
5
6
7
int main() // Главная функция
{
printf("Hello, world!"); // Вывод сообщения
getchar(); // Задержка окна консоли
return 0;
}
Результат работы программы:

Теперь попробуем написать текст на русском языке.
2
3
4
5
6
7
int main()
{
printf("Здравствуй, мир!");
getchar();
return 0;
}
Результат работы программы:

Проблема русского языка в консольных приложениях заключается в том, что консоль и редактор кода Microsoft Visual Studio поддерживают разные кодовые страницы. Для того, чтобы увидеть русские символы в консоли необходимо поменять кодовую страницу в консоли, чтобы она соответствовала кодовой странице редактора (1251). С этой целью вызывается функция system("chcp 1251") с соответствующей командной строкой. Прототип функции system() содержится в библиотеке <stdlib.h>.
При этом текст программы будет выглядеть следующим образом:
2
3
4
5
6
7
8
9
10
#include <stdlib.h>
int main()
{
system("chcp 1251"); // Текущая кодовая страница 1251
system("cls"); // Очистка консоли
printf("Здравствуй, мир!"); // Вывод сообщения
getchar();
return 0;
}
Результат работы программы:
Назад: Язык Си
2
3
4
main();
return 0;
}
2
3
4
int main{
setlocale(LC_ALL, "Rus");
}
2
3
4
5
6
#include <locale.h>
int main() {
setlocale(0, "");
return 0;
}
2
3
4
5
6
7
8
9
10
#include <stdlib.h>
int main()
{
system("chcp 1251"); // Текущая кодовая страница 1251
system("cls"); // Очистка консоли
printf("Здравствуй, мир!"); // Вывод сообщения
getchar();
return 0;
}
2
3
4
5
6
7
8
9
#include <locale.h>
int main()
{
setlocale(LC_ALL, "Rus"); // Добавление поддержки русского языка
printf("Здравствуй, мир!"); // Вывод сообщения
getchar();
return 0;
}
2
SetConsoleOutputCP(1251)// на вывод
2
3
4
int main{
setlocale(LC_ALL, "Rus");
}
2
system("cls"); // Очистка консоли