🔵 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 (тесты).