SPIS TREŚCI
Słowo wstępne Pascala Cuoqa
Słowo wstępne Olliego Whitehouse’a
Podziękowania
Wprowadzenie
- Krótka historia języka C
- Standard języka C
- Standard CERT tworzenia kodu w języku C
- Dla kogo jest ta książka?
- Zawartość książki
1. Wprowadzenie do języka C
- Tworzenie pierwszego programu C
- Kompilowanie i uruchamianie programu
- Dyrektywy preprocesora
- Funkcja main
- Sprawdzanie wartości zwracanych funkcji
- Sformatowane dane wyjściowe
- Edytory i zintegrowane środowiska programistyczne
- Kompilatory
- GNU Compiler Collection
- Clang
- Microsoft Visual Studio
- Przenośność
- Zachowanie zdefiniowane w implementacji
- Zachowanie, którego nie określono
- Zachowanie niezdefiniowane
- Zachowanie powiązane z ustawieniami regionalnymi i wspólne rozszerzenia
- Podsumowanie
2. Obiekty, funkcje i typy
- Obiekty, funkcje, typy i wskaźniki
- Deklarowanie zmiennych
- Zamiana wartości (pierwsza próba)
- Zamiana wartości (druga próba)
- Zasięg
- Okres przechowywania
- Wyrównanie
- Typy obiektów
- Typy boolowskie
- Typy znakowe
- Typy liczbowe
- Typy funkcyjne
- Typy pochodne
- Typy wskaźnikowe
- Tablice
- Struktury
- Unie
- Znaczniki
- Kwalifikatory typu
- const
- volatile
- restrict
- Ćwiczenia
- Podsumowanie
3. Typy arytmetyczne
- Liczby całkowite
- Dopełnienie i dokładność
- Plik nagłówkowy <limits.h>
- Deklarowanie typów całkowitoliczbowych
- Typy całkowitoliczbowe bez znaku
- Typy całkowitoliczbowe ze znakiem
- Stałe całkowitoliczbowe
- Reprezentacja zmiennoprzecinkowa
- Typy zmiennoprzecinkowe
- Arytmetyka liczb zmiennoprzecinkowych
- Wartości zmiennoprzecinkowe
- Stałe zmiennoprzecinkowe
- Przekształcanie typów arytmetycznych
- Ranga przekształcenia typów całkowitoliczbowych
- Promocje typów całkowitoliczbowych
- Zwykłe przekształcenia arytmetyczne
- Przykład przekształcenia niejawnego
- Bezpieczne przekształcenia
- Podsumowanie
4. Wyrażenia i operatory
- Zwykłe przypisanie
- Wyznaczanie wartości
- Wywoływanie funkcji
- Operatory inkrementacji i dekrementacji
- Pierwszeństwo operatorów i asocjatywność
- Kolejność wyznaczania wartości
- Niesekwencyjne i sekwencyjne nieścisłe wyznaczanie wartości
- Punkty sekwencji
- Operator sizeof
- Operatory arytmetyczne
- Jednoargumentowe operatory + i –
- Operator logiczny negacji
- Operatory multiplikatywne
- Operatory addytywne
- Operatory bitowe
- Operator dopełnienia
- Operatory przesunięcia
- Operator koniunkcji bitowej AND
- Operator bitowej alternatywy rozłącznej XOR
- Operator alternatywy bitowej OR
- Operatory logiczne
- Operatory rzutowania
- Operator warunkowy
- Operator _Alignof
- Operatory relacyjne
- Operatory przypisania złożonego
- Operator przecinka
- Arytmetyka wskaźnikowa
- Podsumowanie
5. Przepływ sterowania
- Instrukcje wyrażeniowe
- Instrukcje złożone
- Instrukcje wyboru
- Instrukcja if
- Instrukcja switch
- Instrukcje iteracji
- Instrukcja while
- Instrukcja do…while
- Instrukcja for
- Instrukcje skoku
- Instrukcja goto
- Instrukcja continue
- Instrukcja break
- Instrukcja return
- Ćwiczenia
- Podsumowanie
6. Pamięć alokowana dynamicznie
- Okres przechowywania
- Menedżery sterty i pamięci
- Kiedy korzystać z pamięci alokowanej dynamicznie
- Funkcje zarządzania pamięcią
- Funkcja malloc
- Funkcja aligned_alloc
- Funkcja calloc
- Funkcja realloc
- Funkcja reallocarray
- Funkcja free
- Stany pamięci
- Elastyczne elementy składowe tablicy
- Inne dynamicznie alokowane obszary pamięci
- Funkcja alloca
- Tablice o zmiennej długości
- Debugowanie problemów związanych z alokowanym obszarem pamięci
- Narzędzie dmalloc
- Systemy, w których bezpieczeństwo ma krytyczne znaczenie
- Ćwiczenia
- Podsumowanie
7. Znaki i łańcuchy
- Znaki
- ASCII
- Unicode
- Źródłowy i wykonawczy zestaw znaków
- Typy danych
- Stałe znakowe
- Sekwencje wyjścia
- Linux
- Windows
- Konwersja znaków
- Łańcuchy
- Literały łańcuchowe
- Funkcje obsługi łańcuchów
- Pliki nagłówkowe <string.h> i <wchar.h>
- Interfejsy sprawdzające ograniczenia dodatku Annex K
- POSIX
- Microsoft
- Podsumowanie
8. Operacje wejścia-wyjścia
- Standardowe strumienie operacji wejścia-wyjścia
- Buforowanie strumieni
- Strumienie predefiniowane
- Orientacja strumienia
- Strumienie tekstowe i binarne
- Otwieranie i tworzenie plików
- Funkcja fopen
- Funkcja open standardu POSIX
- Zamykanie plików
- Funkcja fclose
- Funkcja close standardu POSIX
- Odczytywanie i zapisywanie znaków oraz wierszy
- Opróżnianie strumieni
- Ustawianie pozycji w pliku
- Usuwanie plików i zmienianie ich nazwy
- Użycie plików tymczasowych
- Wczytywanie strumieni tekstu sformatowanego
- Odczytywanie strumieni binarnych i wykonywanie w nich zapisu
- Podsumowanie
9. Preprocesor
- Proces kompilacji
- Dołączanie plików
- Łańcuchy dołączania z apostrofami i nawiasami kątowymi
- Dołączanie warunkowe
- Generowanie błędów
- Zastosowanie strażników plików nagłówkowych
- Definicje makr
- Zastępowanie makr
- Makra typu ogólnego
- Makra predefiniowane
- Podsumowanie
10. Struktura programu
- Podstawy komponentyzacji
- Sprzęganie i spójność
- Wielokrotne użycie kodu
- Abstrakcje danych
- Typy nieprzenikalne
- Pliki wykonywalne
- Konsolidacja
- Tworzenie struktury prostego programu
- Kompilowanie kodu
- Podsumowanie
11. Debugowanie, testowanie i analizowanie
- Asercje
- Asercje statyczne
- Asercje fazy uruchamiania
- Ustawienia i flagi kompilatora
- GCC i Clang
- Visual C++
- Debugowanie
- Testowanie jednostkowe
- Analiza statyczna
- Analiza dynamiczna
- AddressSanitizer
- Ćwiczenia
- Podsumowanie
Bibliografia
Opinie
Na razie nie ma opinii o produkcie.