1 | Prolog | 11
|
|
|
1.1 | Die Vorgeschichte | 11
|
1.2 | Wie erstellt man ein C-Programm? | 12
|
1.3 | Wie geht es weiter? | 14
|
|
|
|
|
2 | Erste Schritte | 16
|
|
|
2.1 | Ein erstes Beispiel | 16
|
2.1.1 | Programm schreiben | 16
|
2.1.2 | Programm erstellen | 17
|
2.1.3 | Programm aufrufen | 18
|
2.2 | Das Programm | 19
|
2.3 | Die Funktion printf | 21
|
2.4 | Das Format des Programmcodes | 22
|
2.5 | Zusammenfassung | 24
|
2.6 | Übungen | 24
|
|
|
|
|
3 | Mit Zahlen arbeiten | 26
|
|
|
3.1 | Mit ganzen Zahlen rechnen | 26
|
3.2 | Fließkomma-Zahlen | 30
|
3.3 | Formatierte Zahlenausgabe | 32
|
3.4 | Ein Additionsprogramm | 34
|
3.5 | Zusammenfassung | 37
|
3.6 | Übungen | 37
|
|
|
|
|
4 | Entscheidungen treffen | 40
|
|
|
4.1 | Entscheidungen in Ausdrücken | 40
|
|
|
4.2 | Bedingte Anweisungen | 43
|
|
|
4.3 | Alternative Anweisungen | 45
|
|
|
4.4 | Logische Verknüpfungen | 48
|
4.4.1 | Die Grundverknüpfungen | 49
|
4.4.2 | Reihenfolge der Auswertung | 51
|
4.4.3 | Logische Werte | 52
|
4.4.4 | Sonderverknüpfungen | 53
|
|
|
4.5 | Fallunterscheidungen | 56
|
|
|
4.6 | Konstante Zeichen | 61
|
|
|
4.7 | Zusammenfassung | 62
|
|
|
4.8 | Übungen | 63
|
|
|
|
|
5 | Wiederholen von Programmteilen | 65
|
|
|
5.1 | Zählschleifen | 65
|
5.1.1 | Einfache Schleifen | 65
|
5.1.2 | Geschachtelte Schleifen | 69
|
|
|
5.2 | Die while-Schleife | 71
|
|
|
5.3 | Die do-Schleife | 73
|
|
|
5.4 | Schleifen aussetzen | 74
|
|
|
5.5 | Zusammenfassung | 77
|
|
|
5.6 | Übungen | 78
|
|
|
|
|
6 | Funktionen definieren | 80
|
|
|
6.1 | Funktionen als Bausteine | 80
|
6.2 | Funktionsparameter | 82
|
6.3 | Rückgabewerte | 86
|
6.4 | Prototypen | 89
|
6.5 | Zusammenfassung | 92
|
6.6 | Übungen | 92
|
|
|
|
|
7 | Felder und Zeichenketten | 94
|
|
|
7.1 | Felder | 94
|
7.1.1 | Felder definieren | 94
|
7.1.2 | Feldelemente ansprechen | 95
|
|
|
7.2 | Zeichenketten | 96
|
|
|
7.3 | Zeichenkettenfunktionen | 101
|
7.3.1 | Kopieren und Verketten | 101
|
7.3.2 | Textvergleiche | 104
|
|
|
7.4 | Umwandlungsfunktionen | 105
|
|
|
7.5 | Mehrdimensionale Felder | 106
|
|
|
7.6 | Zusammenfassung | 108
|
|
|
7.7 | Übungen | 108
|
|
|
|
|
8 | Variablen und Konstanten | 111
|
|
|
8.1 | Datentypen | 111
|
8.1.1 | Der Operator sizeof | 113
|
8.1.2 | Die Umlautfalle | 115
|
|
|
8.2 | Sichtbarkeit von Variablen | 116
|
8.2.1 | Lokale Variablen | 117
|
8.2.2 | Globale Variablen | 118
|
|
|
8.3 | Speicherklassen | 120
|
|
|
8.4 | Casts | 123
|
|
|
8.5 | Konstanten | 124
|
|
|
8.6 | Zusammenfassung | 126
|
|
|
8.7 | Übung | 127
|
|
|
|
|
9 | Der Präprozessor | 128
|
|
|
9.1 | Dateien einfügen | 129
|
9.2 | Konstanten definieren | 130
|
9.3 | Bedingtes Kompilieren | 133
|
9.4 | Makros | 137
|
9.5 | Zusammenfassung | 143
|
9.6 | Übungen | 143
|
|
|
|
|
10 | Pointer | 145
|
|
|
10.1 | Adressen | 145
|
10.2 | Pointervariablen | 147
|
10.3 | Pointer als Funktionsparameter | 151
|
10.4 | Pointer-Arithmetik | 154
|
10.5 | Pointer und Felder | 155
|
10.6 | Zusammenfassung | 158
|
10.7 | Übungen | 158
|
|
|
|
|
11 | Kommandozeilenparameter | 160
|
|
|
|
|
12 | Dateien benutzen | 165
|
|
|
12.1 | Dateien öffnen und schließen | 165
|
|
|
12.2 | Dateiexistenz prüfen | 168
|
|
|
12.3 | Lesen einer Datei | 169
|
|
|
12.4 | Schreiben in eine Datei | 171
|
|
|
12.5 | Eine Datei wird gedruckt | 172
|
|
|
12.6 | Dateioperationen | 178
|
12.6.1 | Dateien löschen | 178
|
12.6.2 | Dateien umbenennen | 179
|
|
|
12.7 | Ein einfaches Anzeigeprogramm | 179
|
|
|
12.8 | Binärdateien | 182
|
|
|
12.9 | Dateiausgaben umlenken | 183
|
|
|
12.10 | Zusammenfassung | 185
|
|
|
12.11 | Übungen | 185
|
|
|
|
|
13 | Fehler kontrollieren | 187
|
|
|
13.1 | Testausgaben erzeugen | 187
|
13.2 | Voraussetzungen prüfen | 189
|
13.3 | Signale kontrollieren | 190
|
13.4 | Sauberes Finale | 194
|
13.5 | Zusammenfassung | 203
|
13.6 | Übungen | 204
|
|
|
|
|
14 | Komplexe Datentypen | 205
|
|
|
14.1 | Der Aufzählungstyp | 205
|
|
|
14.2 | Strukturen | 208
|
14.2.1 | Strukturen deklarieren | 208
|
14.2.2 | Strukturvariablen definieren | 209
|
14.2.3 | Auf Strukturen zugreifen | 210
|
14.2.4 | Geschachtelte Strukturen | 213
|
14.2.5 | Strukturen als Parameter | 215
|
|
|
14.3 | Speicherplatz mehrfach nutzen | 218
|
|
|
14.4 | Neue Typen definieren | 220
|
|
|
14.5 | Zusammenfassung | 222
|
|
|
14.6 | Übung | 222
|
|
|
|
|
15 | Programmiertechniken | 223
|
|
|
15.1 | Kompilieren und Linken | 223
|
|
|
15.2 | Variable Parameterlisten | 225
|
|
|
15.3 | Rekursiv programmieren | 227
|
|
|
15.4 | Dynamische Speicherverwaltung | 228
|
|
|
15.5 | Programme und Prozesse | 232
|
15.5.1 | Programme starten | 233
|
15.5.2 | Prozeßkommunikation | 237
|
15.5.3 | Multithreading | 239
|
|
|
15.6 | Systemaufrufe programmieren | 242
|
15.6.1 | ANSI-Bildschirmsteuerung | 243
|
15.6.2 | API-Aufrufe | 245
|
|
|
15.7 | Inline-Assembler | 248
|
15.7.1 | Die Interrupts des PC | 249
|
15.7.2 | Funktionen schreiben | 254
|
|
|
|
|
16 | C und Objekte | 255
|
|
|
16.1 | Ein- und Ausgabe | 256
|
16.2 | Funktionsüberladung | 258
|
16.3 | Klassen | 259
|
16.4 | Ausblick | 265
|
|
|
|
|
17 | Anhang | 267
|
|
|
17.1 | Reservierte Wörter | 267
|
|
|
17.2 | Direktiven des Präprozessors | 267
|
|
|
17.3 | Operatoren | 269
|
|
|
17.4 | Anweisungen | 271
|
|
|
17.5 | Bibliotheksfunktionen | 273
|
17.5.1 | Kurzübersicht | 274
|
17.5.2 | Wie werden Deklarationen gelesen? | 278
|
17.5.3 | Beispiele wichtiger Funktionen | 279
|
|
|
17.6 | Musterlösungen | 289
|
|
|
17.7 | Zeichensatztabellen | 307
|
17.7.1 | ASCII | 308
|
17.7.2 | PC-Zeichensatz | 309
|
17.7.3 | Unix und Linux | 311
|
17.7.4 | Windows | 312
|
|
|
17.8 | Literaturtips | 313
|
|
|
17.9 | Stichwortverzeichnis | 314
|