O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Wskaźniki w języku C. Przewodnik

Book Description

Jeśli chcesz błyskawicznie opanować programowanie w języku C, sięgnij po tę książkę! Gdy już poznasz podstawy, nauczysz się także korzystać ze wskaźników. To prawdziwa zmora wszystkich programistów, bowiem błędne wykorzystanie wskaźnika może w okamgnieniu zrujnować Twój program. Zobacz, jak tego uniknąć i zaprzyjaźnić się ze wskaźnikami. Inne książki opisują wskaźniki w jednym lub dwu rozdziałach, natomiast my poświęciliśmy im całą książkę. Dzięki temu dogłębnie poznasz ten mechanizm, zrozumiesz go i przekonasz się, że przy odrobinie uwagi nie jest on wcale taki straszny! W trakcie lektury wykorzystasz wskaźniki na funkcję, przygotujesz tablicę wskaźników oraz zobaczysz, jak współdziałają one z łańcuchami znaków. Twoją uwagę z pewnością zwrócą fragmenty omawiające zabezpieczenia oraz niewłaściwe wykorzystanie wskaźników. Książka ta jest jedyną pozycją na rynku w całości poświęconą wskaźnikom w języku C. To lektura obowiązkowa każdego programisty! Poznaj: koncepcję wskaźników zastosowanie tablic wskaźników funkcje dynamicznego alokowania pamięci zagrożenia wynikające ze stosowania wskaźników Odkryj tajniki wskaźników w języku C i wykorzystaj ich potencjał!

Table of Contents

  1. Przedmowa
    1. Dlaczego ta książka jest inna?
    2. Podejście do tematu
    3. Odbiorca
    4. Układ książki
    5. Podsumowanie
    6. Konwencje typograficzne przyjęte w tej książce
    7. Korzystanie z przykładowych kodów
  2. 1. Wstęp
    1. Wskaźniki i pamięć
      1. Dlaczego warto opanować wskaźniki
      2. Deklarowanie wskaźników
      3. Interpretowanie deklaracji
      4. Operator adresu
      5. Wyświetlanie wartości wskaźników
        1. Pamięć wirtualna i wskaźniki
      6. Wyłuskiwanie wskaźnika za pomocą operatora adresowania pośredniego
      7. Wskaźniki na funkcje
      8. Pojęcie wartości null
        1. Przypisywać wartość zerową czy nie?
        2. Wskaźniki na void
        3. Wskaźniki globalne i statyczne
    2. Rodzaje wskaźników i ich rozmiary
      1. Modele pamięci
      2. Predefiniowane typy związane ze wskaźnikami
        1. Typ size_t
        2. Stosowanie operatora sizeof ze wskaźnikami
        3. Typy intptr_t i uintptr_t
    3. Operatory wskaźników
      1. Arytmetyka wskaźnikowa
        1. Dodawanie liczby całkowitej do wskaźnika
        2. Wskaźniki na void i dodawanie
        3. Odejmowanie liczby całkowitej od wskaźnika
        4. Odejmowanie wskaźników
      2. Porównywanie wskaźników
    4. Zastosowania wskaźników
      1. Wielopoziomowe adresowanie pośrednie
      2. Stałe i wskaźniki
        1. Wskaźniki na stałą
        2. Wskaźniki typu constant stosowane do obiektów niebędących stałymi
        3. Wskaźniki typu constant stosowane do stałych
        4. Wskaźniki na (wskaźniki typu constant na stałe)
    5. Podsumowanie
  3. 2. C i dynamiczne zarządzanie pamięcią
    1. Dynamiczna alokacja pamięci
      1. Wycieki pamięci
        1. Utrata adresu
        2. Ukryte wycieki pamięci
    2. Funkcje dynamicznego alokowania pamięci
      1. Stosowanie funkcji malloc
        1. Rzutować czy nie?
        2. Niepowodzenie alokacji pamięci
        3. Stosowanie złego rozmiaru i funkcja malloc
        4. Określanie ilości alokowanej pamięci
        5. Stosowanie funkcji malloc ze wskaźnikami globalnymi i statycznymi
      2. Stosowanie funkcji calloc
      3. Stosowanie funkcji realloc
      4. Funkcja alloca i tablice o zmiennej długości
    3. Dealokacja pamięci przy użyciu funkcji free
      1. Przypisywanie wartości NULL do zwalnianego wskaźnika
      2. Podwójne uwalnianie
      3. Sterta i pamięć systemowa
      4. Zwalnianie pamięci po zakończeniu działania programu
    4. Wiszące wskaźniki
      1. Przykłady wiszących wskaźników
      2. Rozwiązywanie problemu wiszących wskaźników
      3. Stosowanie wersji testowej do wykrywania wycieków pamięci
    5. Techniki dynamicznej alokacji pamięci
      1. Sprzątanie pamięci w języku C
      2. Inicjowanie przy pozyskaniu zasobu (RAII)
      3. Korzystanie z procedury obsługi wyjątków
    6. Podsumowanie
  4. 3. Wskaźniki i funkcje
    1. Sterta i stos programu
      1. Stos programu
      2. Organizacja ramki stosu
    2. Przekazywanie i zwracanie za pomocą wskaźnika
      1. Stosowanie wskaźników do przekazywania danych
      2. Przekazywanie danych poprzez wartość
      3. Przekazywanie wskaźnika do stałej
      4. Zwracanie wskaźnika
      5. Wskaźniki do danych lokalnych
      6. Przekazywanie pustych wskaźników
      7. Przekazywanie wskaźnika do wskaźnika
        1. Tworzenie własnej funkcji free
    3. Wskaźniki na funkcję
      1. Deklarowanie wskaźników na funkcję
      2. Stosowanie wskaźników na funkcję
      3. Przekazywanie wskaźników na funkcję
      4. Zwracanie wskaźników na funkcję
      5. Stosowanie tablic wskaźników na funkcję
      6. Porównywanie wskaźników na funkcję
      7. Rzutowanie wskaźników na funkcję
    4. Podsumowanie
  5. 4. Wskaźniki i tablice
    1. Tablice
      1. Tablice jednowymiarowe
      2. Tablice dwuwymiarowe
      3. Tablice wielowymiarowe
    2. Notacja wskaźnikowa i tablice
      1. Różnice pomiędzy tablicami a wskaźnikami
    3. Stosowanie funkcji malloc do tworzenia tablic jednowymiarowych
    4. Stosowanie funkcji realloc do zmiany rozmiaru tablicy
    5. Przekazywanie tablicy jednowymiarowej
      1. Stosowanie notacji tablicowej
      2. Stosowanie notacji wskaźnikowej
    6. Stosowanie jednowymiarowych tablic wskaźników
    7. Wskaźniki i tablice wielowymiarowe
    8. Przekazywanie tablicy wielowymiarowej
    9. Dynamiczna alokacja tablicy dwuwymiarowej
      1. Alokowanie pamięci o potencjalnie nieciągłym obszarze
      2. Alokacja pamięci o ciągłym obszarze
    10. Tablice postrzępione i wskaźniki
    11. Podsumowanie
  6. 5. Wskaźniki i łańcuchy
    1. Podstawowe wiadomości na temat wskaźników
      1. Deklaracja łańcucha
      2. Pula literałów łańcuchowych
        1. Gdy literał łańcuchowy nie jest stałą
      3. Inicjalizacja łańcucha
        1. Inicjalizacja tablicy elementów typu char
        2. Inicjalizowanie wskaźnika na obiekt typu char
        3. Inicjalizacja łańcucha przy użyciu standardowego wejścia
        4. Alokacja łańcuchów — podsumowanie
    2. Standardowe operacje wykonywane na łańcuchach
      1. Porównywanie łańcuchów
      2. Kopiowanie łańcuchów
      3. Łączenie łańcuchów
    3. Przekazywanie łańcuchów
      1. Przekazywanie prostego łańcucha
      2. Przekazywanie wskaźnika na stałą typu char
      3. Przekazywanie wskaźnika wymagającego inicjalizacji
      4. Przekazywanie argumentów do aplikacji
    4. Zwracanie łańcuchów
      1. Zwracanie adresu literału
      2. Zwracanie adresu pamięci adresowanej dynamicznie
        1. Zwracanie adresu łańcucha lokalnego
    5. Wskaźniki na funkcje i łańcuchy
    6. Podsumowanie
  7. 6. Wskaźniki i struktury
    1. Wstęp
      1. Alokacja struktury w pamięci
    2. Zagadnienia związane z dealokacją struktury
    3. Unikanie narzutu wynikającego ze stosowania funkcji malloc i free
    4. Stosowanie wskaźników do obsługi struktur danych
      1. Jednostronna lista powiązana
      2. Stosowanie wskaźników do obsługi kolejek
      3. Stosowanie wskaźników do obsługi stosu
      4. Stosowanie wskaźników do obsługi drzewa
    5. Podsumowanie
  8. 7. Problemy z zabezpieczeniami i niewłaściwe stosowanie wskaźników
    1. Deklaracja i inicjalizacja wskaźników
      1. Niewłaściwa deklaracja wskaźnika
      2. Niepowodzenie inicjalizacji wskaźnika przed użyciem
      3. Rozwiązywanie problemów z niezainicjalizowanymi wskaźnikami
    2. Problemy wynikające ze stosowania wskaźników
      1. Wykrywanie wartości zerowej
      2. Niewłaściwe stosowanie operatora wyłuskiwania
      3. Wiszące wskaźniki
      4. Uzyskiwanie dostępu do pamięci znajdującej się poza granicami tablicy
      5. Błędne obliczenie rozmiaru tablicy
      6. Niewłaściwe stosowanie operatora sizeof
      7. Zawsze dopasowuj do siebie typy wskaźników
      8. Wskaźniki ograniczone
      9. Problemy z zabezpieczeniami związane z łańcuchami
      10. Arytmetyka wskaźnikowa i struktury
      11. Problemy związane ze wskaźnikami na funkcję
    3. Problemy związane z dealokacją pamięci
      1. Dublowanie funkcji free
      2. Czyszczenie danych wrażliwych
    4. Stosowanie narzędzi analizy statycznej
    5. Podsumowanie
  9. 8. Pozostałe techniki
    1. Rzutowanie wskaźników
      1. Uzyskiwanie dostępu do adresu specjalnego przeznaczenia
      2. Uzyskiwanie dostępu do portu
      3. Uzyskiwanie dostępu do pamięci przy użyciu DMA
      4. Określanie porządku bajtów danej maszyny
    2. Aliasing wskaźników i słowo kluczowe restrict
      1. Stosowanie unii do reprezentacji wartości na różne sposoby
      2. Strict aliasing
      3. Stosowanie słowa kluczowego restrict
    3. Wątki i wskaźniki
      1. Współdzielenie wskaźników przez wątki
      2. Stosowanie wskaźników na funkcję do obsługi wywołań zwrotnych
    4. Techniki obiektowe
      1. Tworzenie i stosowanie wskaźników nieprzeźroczystych
      2. Polimorfizm w języku C
    5. Podsumowanie
  10. A. O autorze
  11. Indeks
  12. Kolofon
  13. Copyright