E-book details

Wskaźniki w języku C. Przewodnik

Wskaźniki w języku C. Przewodnik

Richard Reese

Ebook

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ł!

Przedmowa (9)

1. Wstęp (15)

  • Wskaźniki i pamięć (16)
    • Dlaczego warto opanować wskaźniki (17)
    • Deklarowanie wskaźników (20)
    • Interpretowanie deklaracji (22)
    • Operator adresu (23)
    • Wyświetlanie wartości wskaźników (24)
    • Wyłuskiwanie wskaźnika za pomocą operatora adresowania pośredniego (26)
    • Wskaźniki na funkcje (27)
    • Pojęcie wartości null (27)
  • Rodzaje wskaźników i ich rozmiary (32)
    • Modele pamięci (32)
    • Predefiniowane typy związane ze wskaźnikami (33)
  • Operatory wskaźników (37)
    • Arytmetyka wskaźnikowa (37)
    • Porównywanie wskaźników (42)
  • Zastosowania wskaźników (42)
    • Wielopoziomowe adresowanie pośrednie (43)
    • Stałe i wskaźniki (44)
  • Podsumowanie (50)

2. C i dynamiczne zarządzanie pamięcią (51)

  • Dynamiczna alokacja pamięci (52)
    • Wycieki pamięci (55)
  • Funkcje dynamicznego alokowania pamięci (57)
    • Stosowanie funkcji malloc (58)
    • Stosowanie funkcji calloc (62)
    • Stosowanie funkcji realloc (63)
    • Funkcja alloca i tablice o zmiennej długości (66)
  • Dealokacja pamięci przy użyciu funkcji free (66)
    • Przypisywanie wartości NULL do zwalnianego wskaźnika (68)
    • Podwójne uwalnianie (68)
    • Sterta i pamięć systemowa (70)
    • Zwalnianie pamięci po zakończeniu działania programu (70)
  • Wiszące wskaźniki (71)
    • Przykłady wiszących wskaźników (71)
    • Rozwiązywanie problemu wiszących wskaźników (74)
    • Stosowanie wersji testowej do wykrywania wycieków pamięci (74)
  • Techniki dynamicznej alokacji pamięci (75)
    • Sprzątanie pamięci w języku C (76)
    • Inicjowanie przy pozyskaniu zasobu (RAII) (76)
    • Korzystanie z procedury obsługi wyjątków (77)
  • Podsumowanie (78)

3. Wskaźniki i funkcje (79)

  • Sterta i stos programu (80)
    • Stos programu (80)
    • Organizacja ramki stosu (81)
  • Przekazywanie i zwracanie za pomocą wskaźnika (84)
    • Stosowanie wskaźników do przekazywania danych (84)
    • Przekazywanie danych poprzez wartość (85)
    • Przekazywanie wskaźnika do stałej (86)
    • Zwracanie wskaźnika (87)
    • Wskaźniki do danych lokalnych (89)
    • Przekazywanie pustych wskaźników (91)
    • Przekazywanie wskaźnika do wskaźnika (91)
  • Wskaźniki na funkcję (95)
    • Deklarowanie wskaźników na funkcję (96)
    • Stosowanie wskaźników na funkcję (97)
    • Przekazywanie wskaźników na funkcję (99)
    • Zwracanie wskaźników na funkcję (99)
    • Stosowanie tablic wskaźników na funkcję (100)
    • Porównywanie wskaźników na funkcję (101)
    • Rzutowanie wskaźników na funkcję (102)
  • Podsumowanie (103)

4. Wskaźniki i tablice (105)

  • Tablice (106)
    • Tablice jednowymiarowe (107)
    • Tablice dwuwymiarowe (108)
    • Tablice wielowymiarowe (109)
  • Notacja wskaźnikowa i tablice (109)
    • Różnice pomiędzy tablicami a wskaźnikami (112)
  • Stosowanie funkcji malloc do tworzenia tablic jednowymiarowych (113)
  • Stosowanie funkcji realloc do zmiany rozmiaru tablicy (114)
  • Przekazywanie tablicy jednowymiarowej (118)
    • Stosowanie notacji tablicowej (118)
    • Stosowanie notacji wskaźnikowej (119)
  • Stosowanie jednowymiarowych tablic wskaźników (120)
  • Wskaźniki i tablice wielowymiarowe (122)
  • Przekazywanie tablicy wielowymiarowej (125)
  • Dynamiczna alokacja tablicy dwuwymiarowej (128)
    • Alokowanie pamięci o potencjalnie nieciągłym obszarze (129)
    • Alokacja pamięci o ciągłym obszarze (129)
  • Tablice postrzępione i wskaźniki (131)
  • Podsumowanie (135)

5. Wskaźniki i łańcuchy (137)

  • Podstawowe wiadomości na temat wskaźników (138)
    • Deklaracja łańcucha (139)
    • Pula literałów łańcuchowych (139)
    • Inicjalizacja łańcucha (141)
  • Standardowe operacje wykonywane na łańcuchach (145)
    • Porównywanie łańcuchów (145)
    • Kopiowanie łańcuchów (147)
    • Łączenie łańcuchów (149)
  • Przekazywanie łańcuchów (153)
    • Przekazywanie prostego łańcucha (153)
    • Przekazywanie wskaźnika na stałą typu char (155)
    • Przekazywanie wskaźnika wymagającego inicjalizacji (155)
    • Przekazywanie argumentów do aplikacji (157)
  • Zwracanie łańcuchów (158)
    • Zwracanie adresu literału (158)
    • Zwracanie adresu pamięci adresowanej dynamicznie (160)
  • Wskaźniki na funkcje i łańcuchy (162)
  • Podsumowanie (165)

6. Wskaźniki i struktury (167)

  • Wstęp (168)
    • Alokacja struktury w pamięci (169)
  • Zagadnienia związane z dealokacją struktury (170)
  • Unikanie narzutu wynikającego ze stosowania funkcji malloc i free (174)
  • Stosowanie wskaźników do obsługi struktur danych (176)
    • Jednostronna lista powiązana (177)
    • Stosowanie wskaźników do obsługi kolejek (185)
    • Stosowanie wskaźników do obsługi stosu (188)
    • Stosowanie wskaźników do obsługi drzewa (190)
  • Podsumowanie (194)

7. Problemy z zabezpieczeniami i niewłaściwe stosowanie wskaźników (195)

  • Deklaracja i inicjalizacja wskaźników (197)
    • Niewłaściwa deklaracja wskaźnika (197)
    • Niepowodzenie inicjalizacji wskaźnika przed użyciem (198)
    • Rozwiązywanie problemów z niezainicjalizowanymi wskaźnikami (198)
  • Problemy wynikające ze stosowania wskaźników (199)
    • Wykrywanie wartości zerowej (200)
    • Niewłaściwe stosowanie operatora wyłuskiwania (201)
    • Wiszące wskaźniki (201)
    • Uzyskiwanie dostępu do pamięci znajdującej się poza granicami tablicy (202)
    • Błędne obliczenie rozmiaru tablicy (203)
    • Niewłaściwe stosowanie operatora sizeof (203)
    • Zawsze dopasowuj do siebie typy wskaźników (204)
    • Wskaźniki ograniczone (205)
    • Problemy z zabezpieczeniami związane z łańcuchami (206)
    • Arytmetyka wskaźnikowa i struktury (207)
    • Problemy związane ze wskaźnikami na funkcję (209)
  • Problemy związane z dealokacją pamięci (211)
    • Dublowanie funkcji free (211)
    • Czyszczenie danych wrażliwych (211)
  • Stosowanie narzędzi analizy statycznej (212)
  • Podsumowanie (213)

8. Pozostałe techniki (215)

  • Rzutowanie wskaźników (216)
    • Uzyskiwanie dostępu do adresu specjalnego przeznaczenia (217)
    • Uzyskiwanie dostępu do portu (219)
    • Uzyskiwanie dostępu do pamięci przy użyciu DMA (220)
    • Określanie porządku bajtów danej maszyny (220)
  • Aliasing wskaźników i słowo kluczowe restrict (221)
    • Stosowanie unii do reprezentacji wartości na różne sposoby (223)
    • Strict aliasing (225)
    • Stosowanie słowa kluczowego restrict (226)
  • Wątki i wskaźniki (227)
    • Współdzielenie wskaźników przez wątki (228)
    • Stosowanie wskaźników na funkcję do obsługi wywołań zwrotnych (231)
  • Techniki obiektowe (233)
    • Tworzenie i stosowanie wskaźników nieprzeźroczystych (233)
    • Polimorfizm w języku C (237)
  • Podsumowanie (242)

Skorowidz (243)

  • Title: Wskaźniki w języku C. Przewodnik
  • Author: Richard Reese
  • Original title: Understanding and Using C Pointers
  • Translation: Konrad Matuk
  • ISBN: 978-83-246-8292-8, 9788324682928
  • Date of issue: 2014-02-14
  • Format: Ebook
  • Item ID: wskazc
  • Publisher: Helion