Programowanie w jezyku C FAQ.pdf

(246 KB) Pobierz
IDZ DO
PRZYK£ADOWY ROZDZIA£
SPIS TRE CI
KATALOG KSI¥¯EK
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
Programowanie
w jêzyku C. FAQ
Autor: Steve Summit
T³umaczenie: Przemys³aw Kowalczyk
ISBN: 83-7361-094-4
Tytu³ orygina³u:
C Programming FAQs
Format: B5, stron: 400
TWÓJ KOSZYK
DODAJ DO KOSZYKA
Przys³owie „kto pyta, nie b³¹dzi” nie zawiera ca³ej prawdy. Nie wystarczy pytaæ, trzeba
jeszcze znajdowaæ odpowiedzi. Ksi¹¿ka „Programowanie w jêzyku C. FAQ” to zbiór
kilkuset odpowiedzi na najczê ciej zadawane pytania na temat tego jêzyka
programowania. Z pewno ci¹ czê æ z przedstawionych tu pytañ ju¿ pojawi³a siê
w Twojej praktyce programistycznej (pamiêtasz, ile czasu straci³e poszukuj¹c
odpowiedzi?). Inne problemy dopiero siê pojawi¹ i je li na Twojej pó³ce bêdzie ta
ksi¹¿ka, szybko znajdziesz w niej zwiêz³e, ale wyczerpuj¹ce rozwi¹zanie czêsto
wzbogacone przyk³adem kodu ród³owego.
Chocia¿ ksi¹¿ka ¿adn¹ miar¹ nie powinna byæ traktowana jako podrêcznik, z którego
mo¿na nauczyæ siê programowania w C, z pewno ci¹ przyda siê ka¿dej osobie
u¿ywaj¹cej tego jêzyka w codziennej praktyce. Autor porusza wiele przydatnych
zagadnieñ obejmuj¹cych szeroki zestaw tematów.
Omówiono miêdzy innymi:
• Deklaracje
• Struktury i unie
• Puste wska niki
• Wyra¿enia
• Makroprocesor
• Alokacjê pamiêci
• Ró¿nice miêdzy standardami C
• Standardow¹ bibliotekê wej cia-wyj cia
• Kwestie zwi¹zane z systemami operacyjnymi
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWO CIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treści
Pytania.............................................................................................. 9
Przedmowa...................................................................................... 37
Wprowadzenie ................................................................................. 41
Jak korzystać z tej ksią ki? ......................................................................................41
Format pytań..........................................................................................................43
Przykłady kodu ......................................................................................................43
Organizacja ksią ki .................................................................................................44
Rozdział 1. Deklaracje i inicjalizacja................................................................... 47
Podstawowe typy....................................................................................................47
Deklaracje wskaźników ...........................................................................................50
Styl deklaracji.........................................................................................................51
Klasy pamięci.........................................................................................................54
Definicje typów ......................................................................................................55
Kwalifikator const ..................................................................................................59
Zło one deklaracje ..................................................................................................59
Rozmiary tablic ......................................................................................................62
Problemy z deklaracjami .........................................................................................64
Przestrzeń nazw......................................................................................................65
Inicjalizacja............................................................................................................69
Rozdział 2. Struktury, unie i typy wyliczeniowe................................................... 73
Deklaracje struktur..................................................................................................73
Działania na strukturach ..........................................................................................78
Wyrównywanie pól struktur.....................................................................................80
Dostęp do pól struktur.............................................................................................82
Ró ne pytania na temat struktur ...............................................................................83
Unie ......................................................................................................................84
Typy wyliczeniowe .................................................................................................85
Pola bitowe ............................................................................................................86
Rozdział 3. Wyrażenia........................................................................................ 89
Kolejność obliczania ...............................................................................................89
Inne pytania na temat wyra eń.................................................................................96
Reguły zachowywania........................................................................................... 100
6
Programowanie w języku C. FAQ
Rozdział 4. Wskaźniki ...................................................................................... 103
Podstawy ............................................................................................................. 103
Działania na wskaźnikach...................................................................................... 105
Wskaźniki jako parametry funkcji .......................................................................... 106
Ró ne zastosowania wskaźników ........................................................................... 110
Rozdział 5. Wskaźniki puste ............................................................................ 113
Wskaźniki puste i literały wskaźnika pustego .......................................................... 113
Makrodefinicja NULL........................................................................................... 116
Retrospektywa...................................................................................................... 121
Co mo na znaleźć pod adresem 0? ......................................................................... 124
Rozdział 6. Tablice i wskaźniki......................................................................... 127
Podstawowe związki między tablicami i wskaźnikami.............................................. 128
Tablicom nie mo na przypisywać wartości.............................................................. 131
Retrospektywa...................................................................................................... 132
Wskaźniki do tablic............................................................................................... 134
Dynamiczne tworzenie tablic ................................................................................. 136
Funkcje a tablice wielowymiarowe ......................................................................... 140
Rozmiary tablic .................................................................................................... 143
Rozdział 7. Przydzielanie pamięci ..................................................................... 145
Podstawowe problemy z przydzielaniem pamięci..................................................... 145
Wywoływanie funkcji malloc................................................................................. 149
Problemy z funkcją malloc..................................................................................... 152
Zwalnianie pamięci ............................................................................................... 155
Rozmiar przydzielonych bloków ............................................................................ 158
Inne funkcje przydzielające pamięć ........................................................................ 159
Rozdział 8. Znaki i napisy ................................................................................ 165
Rozdział 9. Wyrażenia i zmienne logiczne ......................................................... 171
Rozdział 10. Preprocesor języka C ..................................................................... 175
Makrodefinicje ..................................................................................................... 175
Pliki nagłówkowe ................................................................................................. 180
Kompilacja warunkowa......................................................................................... 183
Zaawansowane przetwarzanie ................................................................................ 186
Makrodefinicje ze zmienną liczbą argumentów........................................................ 189
Rozdział 11. Standard ANSI/ISO języka C .......................................................... 193
Standard .............................................................................................................. 193
Prototypy funkcji .................................................................................................. 195
Kwalifikator const ................................................................................................ 198
Funkcja main........................................................................................................ 200
Właściwości preprocesora ..................................................................................... 203
Inne sprawy związane ze Standardem ANSI............................................................ 205
Stare lub niezgodne ze Standardem kompilatory ...................................................... 208
Kwestie zgodności ................................................................................................ 211
Rozdział 12. Standardowa biblioteka wejścia-wyjścia ......................................... 215
Podstawy obsługi wejścia-wyjścia .......................................................................... 216
Formaty dla funkcji printf ...................................................................................... 218
Formaty dla funkcji scanf ...................................................................................... 222
Problemy z funkcją scanf ...................................................................................... 224
Inne funkcje z biblioteki wejścia-wyjścia ................................................................ 228
Spis treści
7
Otwieranie plików i operacje na nich ...................................................................... 232
Przekierowywanie strumieni stdin i stdout............................................................... 235
Obsługa wejścia-wyjścia w trybie binarnym ............................................................ 237
Rozdział 13. Funkcje biblioteczne ...................................................................... 241
Funkcje operujące na napisach ............................................................................... 241
Sortowanie ........................................................................................................... 247
Data i czas ........................................................................................................... 251
Liczby losowe ...................................................................................................... 254
Inne funkcje biblioteczne....................................................................................... 261
Rozdział 14. Liczby zmiennoprzecinkowe............................................................ 265
Rozdział 15. Listy argumentów o zmiennej długości............................................ 273
Wywoływanie funkcji o zmiennej liczbie argumentów ............................................. 274
Implementacja funkcji o zmiennej liczbie argumentów............................................. 275
Pobieranie argumentów z listy................................................................................ 280
Trudniejsze problemy............................................................................................ 283
Rozdział 16. Dziwne problemy............................................................................ 287
Rozdział 17. Styl ............................................................................................... 293
Rozdział 18. Narzędzia i zasoby.......................................................................... 299
Narzędzia............................................................................................................. 299
Program lint ......................................................................................................... 301
Zasoby................................................................................................................. 303
Rozdział 19. Kwestie zależne od systemu operacyjnego...................................... 309
Klawiatura i ekran................................................................................................. 310
Inne operacje wejścia-wyjścia ................................................................................ 316
Pliki i katalogi ...................................................................................................... 318
Bezpośredni dostęp do pamięci .............................................................................. 324
Polecenia systemowe ............................................................................................ 326
Środowisko procesu .............................................................................................. 329
Inne operacje zale ne od systemu........................................................................... 330
Retrospektywa...................................................................................................... 333
Rozdział 20. Różności........................................................................................ 335
Przydatne techniki................................................................................................. 336
Bity i bajty ........................................................................................................... 343
Wydajność ........................................................................................................... 348
Instrukcja switch................................................................................................... 352
Ró ne kwestie językowe ....................................................................................... 354
Inne języki ........................................................................................................... 358
Algorytmy............................................................................................................ 359
Inne..................................................................................................................... 364
Słownik ......................................................................................... 369
Bibliografia .................................................................................... 379
Skorowidz ..................................................................................... 383
Rozdział 6.
Tablice i wskaźniki
Siła języka C wynika między innymi z ujednoliconego traktowania tablic i wskaźni-
ków. Bardzo łatwo jest za pomocą wskaźników operować na tablicach czy symulo-
wać tablice tworzone dynamicznie. Tak zwana odpowiedniość wskaźników i tablic
jest tak du a, e niektórzy programiści zapominają o zasadniczych ró nicach, myśląc,
e są one identyczne, albo zakładając nieistniejące między nimi podobieństwa.
Podstawą „odpowiedniości” tablic i wskaźników w języku C jest fakt, e odwołania
do tablic „degenerują się” do wskaźników do pierwszego elementu tablicy, co opisuje
pytanie 6.3. Z tego powodu tablice są „obywatelami drugiej kategorii” w C — nigdy
nie posługujesz się tablicami jako całymi obiektami (na przykład aby skopiować je
albo przekazać do funkcji). Kiedy u yjesz nazwy tablicy, w wyra eniu pojawi się
wskaźnik zamiast całej tablicy. Nawet operator indeksowania tablic
=?
w rzeczywi-
stości operuje na wskaźniku. Wyra enie
C=K?
jest równowa ne wyra eniu wskaźni-
kowemu

C K

.
Du a część tego rozdziału (szczególnie pytania „retrospektywne” 6.8 – 6.10) mo e
wydawać się powtarzaniem wcią tych samych wiadomości. Wielu programistów ma
jednak spore kłopoty ze zrozumieniem związków i ró nic między wskaźnikami i ta-
blicami, w tym rozdziale staram się wyjaśnić je najlepiej, jak tylko potrafię. Je eli
nudzą Cię takie powtórki, mo esz przeskoczyć do następnego rozdziału. Je eli jednak
masz kłopoty z tablicami lub wskaźnikami, przeczytaj uwa nie odpowiedzi, a po-
szczególne części układanki na pewno „wskoczą na swoje miejsca”.
Zgłoś jeśli naruszono regulamin