Си — о разделе
Длинные листинги (от ~15 строк) вынесены в каталог code.spirzen.ru и подгружаются в статьях через ExternalCodeEmbed — так HTML энциклопедии не раздувается, а код остаётся с подсветкой, вкладками и сериями "шаг 1…N". Короткие фрагменты (одна строка, пара выражений) по-прежнему прямо в markdown. Диаграммы mermaid и интерактив — на месте или в play.spirzen.ru.
Зачем этот раздел
C — основа системного программирования, Unix и многих современных языков. Маршрут ниже ведёт от Hello, World к памяти, линковке и стандартам.
Частые ошибки при старте
| Ошибка | Что делать |
|---|---|
| Игнор предупреждений компилятора | -Wall -Wextra с первого дня |
| Утечки и UB | Память процесса, идиомы |
| Смешение C и C++ | Держитесь .c / компилятора gcc, не g++ без нужды |
Рекомендуемый порядок для первого прохода:
- Первая программа — установка toolchain,
Hello, World, сборка из терминала. - Основы языка — синтаксис, память, указатели, структуры.
- Типы данных — примитивы, массивы, строки, UB и
<stdint.h>. - Управляющие конструкции и операторы —
if, циклы, побитовые операции. - Функции и указатели — прототипы, модули
.h/.c, передача по указателю. - Архитектура программ и цепочка компиляции — препроцессор, объектные файлы, линковка.
- Стандарты C — C89/C99/C11/C17/C23.
- Память процесса — сегменты, стек, куча, data и BSS.
- Справочник — таблицы и быстрый поиск по API.
Углубление — структуры и объединения, идиомы и ошибки, хеш-таблица, встраиваемая БД и SQLite — практика и API, многопоточность, файловый ввод-вывод, компиляторы и IDE, примеры, системное программирование. Исторический контекст — История языка С.
Сначала: Что такое код и как он работает — общая база — код, блок кода, компиляция и интерпретация, исходный, байт- и машинный код; в этом разделе — синтаксис и особенности языка.
Что попробовать
- Первая программа — соберите и запустите из терминала.
- Один warning исправьте по подсказке
gcc. - Сравните с C++ после пунктов 1–3 маршрута выше.
История языка С
История языка C - происхождение, ключевые идеи и влияние на развитие операционных систем и компиляторов.
Основы языка С
Язык С — это процедурный, компилируемый язык программирования, созданный в начале 1970-х годов Деннисом Ритчи в Bell Labs.
Инструментальная цепочка компиляции С
Программирование на языке С требует понимания не только самого языка, но и всей совокупности программ, задействованных в процессе превращения исходного текста в исполняемый файл.
Преобразование исходного кода в исполняемый файл
Программа на языке С не выполняется напрямую процессором. Исходный текст проходит несколько этапов обработки, прежде чем превратится в машинный код, который может быть запущен операционной системой.
Стандарты языка С
Язык программирования С существует не как набор случайных правил, а как строго определённая спецификация, зафиксированная в международных стандартах.
Память процесса и сегменты
Как исполняемый файл на С раскладывается по областям памяти — код, данные, BSS, куча и стек — и что это даёт при отладке.
Архитектура программ на С
Архитектура программ на C - организация модулей, процесс компиляции и взаимосвязь компонентов системы.
Компиляторы и среды разработки для С
Язык программирования С занимает особое место в истории и практике разработки программного обеспечения.
Типы данных в С
Типизация, набор правил определения типа данных значений языка.
Структуры и объединения
Язык программирования С предоставляет механизм создания составных типов данных, позволяющих объединять разнородные элементы под единым именем. Этот механизм называется структурой.
Идиомы кода и обработка ошибок
Как на С организовать функции, владение ресурсами, коды ошибок и очистку без исключений и сборщика мусора.
Хеш-таблица на С
Реализация ассоциативного массива на С — хеш-функция, коллизии, цепочки, открытая адресация и изменение размера.
Встраиваемая база данных из С
Работа с встраиваемой SQL-библиотекой из программы на С — соединение, запросы, параметры и транзакции.
Многопоточность на С
Потоки, мьютексы и синхронизация в С — POSIX threads, стандарт C11 и типичные ошибки параллельного кода.
Файловый ввод-вывод
Работа с файлами в С — потоки, текстовый и бинарный режим, буферизация и сериализация структур.
Управляющие конструкции и операторы С
Язык программирования С предоставляет разработчику набор базовых инструментов для управления потоком выполнения программы.
Функции и указатели
Функции в языке С представляют собой фундаментальный строительный блок любой программы.
Первая программа на С
Гайд по установке и настройке с написанием первой программы и её запуском.
Примеры игр и системных утилит на С
Простые игры на С часто служат учебным мостом между теоретическим изучением синтаксиса и практическим применением полученных знаний.
Системное программирование на С
Системное программирование на C - низкоуровневое взаимодействие с ОС, памятью и аппаратными ресурсами.
Справочник по языку С
В языке С строка — это массив символов, завершённый нулевым символом 0.
Си — о разделе
Рекомендуемый порядок для первого прохода: 1. Первая программа — установка toolchain, Hello, World, сборка из терминала.
В подборках
Статья входит в тематические подборки и блок "С чего начать?" на главной. Соседние шаги того же маршрута:
Системное программирование — Ассемблер — о разделе, Rust — о разделе, C++ — о разделе, Системное программирование на C++, Оптимизация размера и производительности приложений, Выполнение кода — о разделе.
Бэкенд и серверная разработка — Ассемблер — о разделе, Haskell — о разделе, Visual Basic — о разделе, Scala — о разделе, Pascal — о разделе, Elixir — о разделе.