C Cheat Sheet: ściąga z języka C
Ostatnia aktualizacja
Hello World i struktura programu
Każdy program w C zaczyna się od main i zwraca int.
| Element | Kod |
|---|---|
| Dołączenie nagłówka | #include <stdio.h> |
| Punkt wejścia | int main(void) { ... } |
| Z argumentami wiersza poleceń | int main(int argc, char *argv[]) { ... } |
| Wypisanie linii | printf("Hello, World!\n"); |
| Zwrócenie sukcesu | return 0; |
| Komentarz jednoliniowy | // comment |
| Komentarz blokowy | /* comment */ |
Typy danych
Rozmiary zależą od platformy; poniższe minima gwarantuje standard.
| Typ | Opis |
|---|---|
int | Liczba całkowita, co najmniej 16 bitów (zwykle 32) |
unsigned int | Nieujemna liczba całkowita |
long / long long | Szersze liczby całkowite (co najmniej 32 / 64 bity) |
float / double | Liczba zmiennoprzecinkowa pojedynczej / podwójnej precyzji |
char | Pojedynczy bajt, używany też do znaków |
_Bool (bool przez <stdbool.h>) | true lub false |
size_t | Typ bez znaku dla rozmiarów i indeksów |
void | Brak typu: używany w funkcjach i wskaźnikach ogólnych |
Specyfikatory formatu printf i scanf
Symbole zastępcze dopasowane do typu każdego argumentu.
| Specyfikator | Pasuje do |
|---|---|
%d / %i | int ze znakiem |
%u | int bez znaku |
%ld / %lld | long / long long |
%f | double (i float w printf) |
%.2f | double z 2 miejscami po przecinku |
%c | Pojedynczy char |
%s | Łańcuch znaków (char *) |
%p | Adres wskaźnika |
%x | int bez znaku w zapisie szesnastkowym |
%zu | size_t |
Operatory
| Operator | Znaczenie |
|---|---|
+ - * / % | Arytmetyka (% to reszta z dzielenia całkowitego) |
== != | Równe / różne |
< > <= >= | Porównanie |
&& || ! | Logiczne i / lub / nie |
& | ^ ~ << >> | Bitowe and, or, xor, not, przesunięcia |
++ -- | Inkrementacja / dekrementacja |
+= -= *= /= | Przypisanie złożone |
cond ? a : b | Operator warunkowy (trójargumentowy) |
sizeof(x) | Rozmiar typu lub zmiennej w bajtach |
Sterowanie przepływem
| Instrukcja | Składnia |
|---|---|
| If / else | if (x > 0) { ... } else { ... } |
| Else if | else if (x == 0) { ... } |
| Switch | switch (n) { case 1: ...; break; default: ...; } |
| Pętla while | while (i < n) { ... } |
| Pętla do-while | do { ... } while (i < n); |
| Pętla for | for (int i = 0; i < n; i++) { ... } |
| Break / continue | break; wychodzi z pętli, continue; przechodzi do następnej iteracji |
| Goto (rzadko) | goto label; ... label: |
Funkcje
Zadeklaruj funkcję przed użyciem albo dodaj prototyp na początku pliku.
| Operacja | Składnia |
|---|---|
| Definicja funkcji | int add(int a, int b) { return a + b; } |
| Prototyp (deklaracja) | int add(int a, int b); |
| Bez wartości zwracanej | void greet(void) { ... } |
| Bez parametrów | int rand_seed(void) { ... } |
| Przekazanie przez wskaźnik (modyfikacja) | void inc(int *p) { (*p)++; } |
| Przekazanie tablicy | int sum(int arr[], int n) { ... } |
| Static (lokalna w pliku) | static int helper(void) { ... } |
Wskaźniki i pamięć
Wskaźnik przechowuje adres. Pamięć na stercie trzeba zwalniać ręcznie.
| Operacja | Składnia |
|---|---|
| Deklaracja wskaźnika | int *p; |
| Pobranie adresu | p = &x; |
| Dereferencja (odczyt/zapis) | int y = *p; / *p = 10; |
| Wskaźnik pusty | int *p = NULL; |
| Alokacja na stercie | int *a = malloc(n * sizeof(int)); |
| Alokacja + zerowanie | int *a = calloc(n, sizeof(int)); |
| Zmiana rozmiaru alokacji | a = realloc(a, newSize); |
| Zwolnienie pamięci na stercie | free(a); |
| Arytmetyka wskaźników | *(a + i) to to samo co a[i] |
Tablice i łańcuchy znaków
Łańcuchy w C to tablice char zakończone znakiem \0.
| Operacja | Składnia |
|---|---|
| Deklaracja tablicy | int nums[5]; |
| Inicjalizacja tablicy | int nums[] = {1, 2, 3}; |
| Dostęp do elementu | nums[0] = 10; |
| Długość tablicy (tablice na stosie) | sizeof(nums) / sizeof(nums[0]) |
| Literał łańcuchowy | char s[] = "hello"; |
| Długość łańcucha | strlen(s) (bez \0) |
| Kopiowanie łańcucha | strcpy(dst, src); |
| Porównanie łańcuchów | strcmp(a, b) == 0 oznacza równość |
| Łączenie łańcuchów | strcat(dst, src); |
Struktury i popularne funkcje biblioteki standardowej
| Operacja | Składnia |
|---|---|
| Definicja struktury | struct Point { int x; int y; }; |
| Deklaracja i dostęp | struct Point p; p.x = 1; |
| Dostęp przez wskaźnik | p->x = 1; (to samo co (*p).x) |
| Alias typu | typedef struct Point Point; |
| Odczyt danych wejściowych | scanf("%d", &n); |
| Zamiana łańcucha na int | int n = atoi("42"); |
| Wartość bezwzględna / potęga | abs(x) (int), pow(x, y) z <math.h> |
| Sortowanie tablicy | qsort(arr, n, sizeof(int), cmp); |
Najczęściej używana składnia C, specyfikatory formatu i wzorce pracy ze wskaźnikami na jednej stronie. Ten C cheat sheet to szybka ściąga do pisania w C: typy danych, specyfikatory printf/scanf, operatory, sterowanie przepływem oraz operacje na wskaźnikach i pamięci, na których wiele osób się potyka.
Wszystko tutaj to standardowe C (C99/C11), które kompiluje się w gcc lub clang. Skopiuj to, czego potrzebujesz, albo uruchom dowolny fragment w edytorze online C, bez instalowania kompilatora. Uczysz się C? Darmowy interaktywny kurs C w Coddy uczy w praktyce wskaźników, pamięci i biblioteki standardowej.
C cheat sheet: najczęstsze pytania
Czy ten C cheat sheet jest darmowy?
Tak. Ta ściąga z C jest całkowicie darmowa i nie wymaga rejestracji. Dodaj ją do zakładek i wracaj, gdy potrzebujesz sprawdzić typ, specyfikator formatu albo operację na wskaźnikach.
Czym różni się stos od sterty w C?
malloc lub calloc, istnieje do wywołania free i używa się jej, gdy pamięć ma przetrwać bieżącą funkcję albo jej rozmiar jest znany dopiero w czasie działania programu. Brak free dla pamięci na stercie powoduje wyciek pamięci.Dlaczego scanf potrzebuje ampersandu (&), a printf nie?
scanf zapisuje wartość z powrotem do zmiennej, więc potrzebuje adresu zmiennej, a właśnie to daje &x. printf tylko odczytuje wartość, więc przekazujesz samą wartość. Wyjątkiem są łańcuchy: tablica char sama zamienia się we wskaźnik, dlatego piszesz scanf("%s", name) bez &.Czy mogę ćwiczyć C online?
Tak. Otwórz edytor online C, aby skompilować i uruchomić dowolny fragment z tej ściągi w przeglądarce, bez instalowania kompilatora. Gdy chcesz uczyć się bardziej systematycznie, darmowy interaktywny kurs C w Coddy prowadzi krok po kroku od zmiennych i pętli do wskaźników i zarządzania pamięcią.
Czy ta ściąga nadaje się dla początkujących?
Tak. Jest ułożona od najczęstszych elementów (typy, printf, sterowanie przepływem) do bardziej zaawansowanych (wskaźniki, pamięć, struktury), więc górnych sekcji możesz używać od pierwszego dnia, a resztę poznawać z czasem.