C - Wikibooks.pdf

(1483 KB) Pobierz
C
Programowanie w C
Stworzone na Wikibooks,
bibliotece wolny podręczników.
387389518.001.png
Wersja . z dnia  listopada 
Copyright
- użytkownicy Wikibooks.
Udziela się zezwolenia do kopiowania, rozpowszechniania lub modyfikacji tego dokumentu
zgodnie z zasadami Licencji Creative Commons Uznanie autorstwa-Na ty samy warunka
. Unported lub dowolnej późniejszej wersji licencji opublikowanej przez Creative Com-
mons, która zawiera te same elementy co niniejsza licencja.
Tekst licencji można znaleźć na stronie http://creativecommons.org/licenses/by-sa/3.0/
Wikibooks nie udziela żadnych gwarancji, zapewnień ani obietnic dotyczących poprawności
publikowanych treści. Nie udziela też żadnych innych gwarancji, zarówno jednoznacznych,
jak i dorozumianych.
'
Spis tre ´ sci
 O podręczniku 
. O czym mówi ten podręcznik? . . . . . . . . . . . . . . . . . . . . . . . . . . 11
. Co trzeba wiedzieć, żeby skorzystać z niniejszego podręcznika? . . . . . . . . 11
. Konwencje przyjęte w tym podręczniku . . . . . . . . . . . . . . . . . . . . . 11
. Czy mogę pomóc? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
. Autorzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
. Źródła . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
 O języku C 
. Historia C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
. Zastosowania języka C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
. Przyszłość C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
 Czego potrzebujesz 
. Czego potrzebujesz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
. Zintegrowane Środowiska Programistyczne . . . . . . . . . . . . . . . . . . . 18
. Dodatkowe narzędzia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
 Używanie kompilatora 
. GCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
. Borland . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
. Czytanie komunikatów o błędach . . . . . . . . . . . . . . . . . . . . . . . . 20
 Pierwszy program 
. Twój pierwszy program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
. Rozwiązywanie problemów . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
 Podstawy 
. Kompilacja: Jak działa C? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
. Co może C? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
. Struktura blokowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
. Zasięg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
. Funkcje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
. Biblioteki standardowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
. Komentarze i styl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
. Preprocesor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
. Nazwy zmiennych, stałych i funkcji . . . . . . . . . . . . . . . . . . . . . . . 32
3
 Zmienne 
. Czym są zmienne? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
. Typy zmiennych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
. Specyfikatory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
. Modyfikatory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
. Uwagi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
 Operatory 
. Przypisanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
. Rzutowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
. Operatory arytmetyczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
. Operacje bitowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
. Porównanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
. Operatory logiczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
. Operator wyrażenia warunkowego . . . . . . . . . . . . . . . . . . . . . . . 51
. Operator przecinek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
. Operator sizeof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
. Inne operatory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
. Priorytety i kolejność obliczeń . . . . . . . . . . . . . . . . . . . . . . . . . . 52
. Kolejność wyliczania argumentów operatora . . . . . . . . . . . . . . . . . . 53
. Uwagi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
. Zobacz też . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
 Instrukcje sterujące 
. Instrukcje warunkowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
. Pętle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
. Instrukcja goto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
. Natychmiastowe kończenie programu — funkcja exit . . . . . . . . . . . . . 65
. Uwagi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
 Podstawowe procedury wejścia i wyjścia 
. Wejście/wyjście . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
. Funkcje wyjścia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
. Funkcja puts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
. Funkcja fputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
. Funkcje wejścia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
 Funkcje 
. Tworzenie funkcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
. Wywoływanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
. Zwracanie wartości . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
. Zwracana wartość . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
. Funkcja main() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
. Dalsze informacje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
. Zobacz też . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
 Preprocesor 
. Wstęp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
. Dyrektywy preprocesora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
. Predefiniowane makra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4
 Biblioteka standardowa 
. Czym jest biblioteka? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
. Po co nam biblioteka standardowa? . . . . . . . . . . . . . . . . . . . . . . . 97
. Gdzie są funkcje z biblioteki standardowej? . . . . . . . . . . . . . . . . . . . 97
. Opis funkcji biblioteki standardowej . . . . . . . . . . . . . . . . . . . . . . . 98
. Uwagi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
 Czytanie i pisanie do plików 
. Pojęcie pliku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
. Identyfikacja pliku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
. Podstawowa obsługa plików . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
. Rozmiar pliku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
. Przykład — pliki graficzny . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
. Co z katalogami? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
 Ćwiczenia dla początkujący 
. Ćwiczenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
 Tablice 
. Wstęp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
. Odczyt/zapis wartości do tablicy . . . . . . . . . . . . . . . . . . . . . . . . . 109
. Tablice znaków . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
. Tablice wielowymiarowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
. Ograniczenia tablic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
. Ciekawostki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
 Wskaźniki 
. Co to jest wskaźnik? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
. Operowanie na wskaźnikach . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
. Arytmetyka wskaźników . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
. Tablice a wskaźniki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
. Gdy argument jest wskaźnikiem... . . . . . . . . . . . . . . . . . . . . . . . . 119
. Pułapki wskaźników . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
. Na co wskazuje ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
. Stałe wskaźniki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
. Dynamiczna alokacja pamięci . . . . . . . . . . . . . . . . . . . . . . . . . . 122
. Wskaźniki na funkcje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
. Możliwe deklaracje wskaźników . . . . . . . . . . . . . . . . . . . . . . . . . 127
. Popularne błędy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
. Ciekawostki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
 Napisy 
. Łańcuchy znaków w języku C . . . . . . . . . . . . . . . . . . . . . . . . . . 129
. Operacje na łańcuchach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
. Bezpieczeństwo kodu a łańcuchy . . . . . . . . . . . . . . . . . . . . . . . . . 134
. Konwersje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
. Operacje na znakach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
. Częste błędy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
. Unicode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
5
Zgłoś jeśli naruszono regulamin