Перейти к основному содержимому

Си — о разделе

Длинные листинги (от ~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++ без нужды

Рекомендуемый порядок для первого прохода:

  1. Первая программа — установка toolchain, Hello, World, сборка из терминала.
  2. Основы языка — синтаксис, память, указатели, структуры.
  3. Типы данных — примитивы, массивы, строки, UB и <stdint.h>.
  4. Управляющие конструкции и операторыif, циклы, побитовые операции.
  5. Функции и указатели — прототипы, модули .h/.c, передача по указателю.
  6. Архитектура программ и цепочка компиляции — препроцессор, объектные файлы, линковка.
  7. Стандарты C — C89/C99/C11/C17/C23.
  8. Память процесса — сегменты, стек, куча, data и BSS.
  9. Справочник — таблицы и быстрый поиск по API.

Углубление — структуры и объединения, идиомы и ошибки, хеш-таблица, встраиваемая БД и SQLite — практика и API, многопоточность, файловый ввод-вывод, компиляторы и IDE, примеры, системное программирование. Исторический контекст — История языка С.

Сначала: Что такое код и как он работает — общая база — код, блок кода, компиляция и интерпретация, исходный, байт- и машинный код; в этом разделе — синтаксис и особенности языка.


Что попробовать

  1. Первая программа — соберите и запустите из терминала.
  2. Один warning исправьте по подсказке gcc.
  3. Сравните с C++ после пунктов 1–3 маршрута выше.

В подборках

Статья входит в тематические подборки и блок "С чего начать?" на главной. Соседние шаги того же маршрута:

Системное программированиеАссемблер — о разделе, Rust — о разделе, C++ — о разделе, Системное программирование на C++, Оптимизация размера и производительности приложений, Выполнение кода — о разделе.

Бэкенд и серверная разработкаАссемблер — о разделе, Haskell — о разделе, Visual Basic — о разделе, Scala — о разделе, Pascal — о разделе, Elixir — о разделе.