🔵 C

Основа системного программирования: типы, указатели, операторы, циклы, функции, память.

Шпаргалки · Программирование · #c #systems

IDE и сборка

CLion, VS Code, Code::Blocks, Visual Studio. Компиляторы: gcc, clang, MSVC. gcc -Wall -O2 main.c -o app, сборка проектов: Make, CMake.

Типы данных

Группа Типы
Целые char, short, int, long, long long, unsigned
Дробные float, double
Размеры (<stdint.h>) int8_t, uint32_t, size_t
Составные массивы, struct, union, enum, указатели T*
int n = 5; int *p = &n; *p = 6;
char s[] = "abc";       // строка = массив char с '\0' в конце
struct P { int x, y; };

Операторы

+ - * / %, ++ --, == != < >, && || !, & | ^ ~ << >>, & (адрес), * (разыменование), ->, sizeof, ?:.

Циклы

for (int i = 0; i < 3; i++) {}
while (cond) {}
do { } while (cond);
break; continue;

Функции

int add(int a, int b) { return a + b; }
void swap(int *a, int *b) { int t = *a; *a = *b; *b = t; }

Стандартная библиотека

Заголовок Содержимое
<stdio.h> printf, scanf, fopen, fgets
<stdlib.h> malloc, free, atoi, qsort, exit
<string.h> strlen, strcpy, strcmp, memcpy
<math.h> sqrt, pow, fabs
<time.h> time, clock

Память

int *a = malloc(10 * sizeof *a);
if (!a) return 1;
free(a);

Каждый malloc должен иметь free.

Внимание: Выход за границы массива и использование освобождённой памяти — неопределённое поведение. Проверяйте valgrind и -fsanitize=address.

Асинхронность

Нет встроенной: потоки pthread, <threads.h> (C11), select/poll/epoll для ввода-вывода.

Библиотеки по задачам

libc, POSIX (системные вызовы), SDL (графика), libcurl (HTTP), SQLite (БД), OpenSSL (шифрование), zlib (сжатие), Check / Unity (тесты).