Grundkurs C
Autoren
Mehr zum Buch
Die kompakte Einführung in C im praktischen Taschenbuchformat. Das Buch führt Sie übersichtlich in alle Sprachgrundlagen ein, bevor es um fortgeschrittene Themen wie Zeiger oder dynamische Speicherverwaltung geht. Mit dem aktuellen Standard C18, aber auch für ältere Compiler. Viele Codebeispiele und Tabellen sowie eine Funktionsreferenz machen das Buch zu Ihrem nützlichen Begleiter. Zu jedem Kapitel bieten Aufgaben mit kommentierten Lösungen eine Lernkontrolle und laden dazu ein, selbst Hand anzulegen. Ideal als Vorlesungsbegleiter oder zum Auffrischen. Aus dem Inhalt: Erste Schritte in C Verzweigungen und Schleifen Funktionen Präprozessor-Direktiven Arrays und Zeichenketten Zeiger Dynamische Speicherverwaltung Dynamische Datenstrukturen Eingabe- und Ausgabe-Funktionen Aktueller ISO-Standard C18 Inhaltsverzeichnis Vorwort ... 17 1. Einstieg in die Welt von C ... 21 1.1 ... Die Sprache C ... 21 1.2 ... Die C-Standardbibliothek ... 22 1.3 ... Die nötigen Werkzeuge für C ... 26 1.4 ... Übersetzen mit der Entwicklungsumgebung ... 29 1.5 ... Übersetzen mit GCC und Clang ... 33 1.6 ... Listings zum Buch ... 35 1.7 ... Kontrollfragen und Aufgaben im Buch ... 36 2. Erste Schritte in C ... 37 2.1 ... Das erste Programm in C ... 37 2.2 ... Die Funktion printf() ... 40 2.3 ... Zeichensätze in C ... 42 2.4 ... Symbole in C ... 45 2.5 ... Kommentare ... 50 2.6 ... Kontrollfragen und Aufgaben ... 52 3. Basisdatentypen in C ... 55 3.1 ... Variablen ... 55 3.2 ... Deklaration und Definition ... 56 3.3 ... Initialisierung und Zuweisung von Werten ... 58 3.4 ... Datentypen für Ganzzahlen ... 59 3.5 ... Datentypen für Zeichen ... 65 3.6 ... Datentypen für Fließkommazahlen ... 68 3.7 ... Boolescher Datentyp ... 72 3.8 ... Speicherbedarf mit sizeof ermitteln ... 73 3.9 ... Wertebereiche der Datentypen ermitteln ... 75 3.10 ... Konstanten erstellen ... 81 3.11 ... Lebensdauer und Sichtbarkeit von Variablen ... 82 3.12 ... void -- ein unvollständiger Typ ... 84 3.13 ... Kontrollfragen und Aufgaben ... 84 4. Rechnen mit C und Operatoren ... 85 4.1 ... Werte formatiert einlesen mit scanf() ... 85 4.2 ... Operatoren ... 89 4.3 ... Arithmetische Operatoren ... 93 4.4 ... Inkrement- und Dekrementoperator ... 95 4.5 ... Bitoperatoren ... 98 4.6 ... Implizite Typumwandlung ... 102 4.7 ... Explizite Typumwandlung ... 106 4.8 ... Mathematische Funktionen in C ... 107 4.9 ... Kontrollfragen und Aufgaben ... 112 5. Bedingte Anweisung und Verzweigung ... 115 5.1 ... Bedingte Anweisungen ... 115 5.2 ... Die alternative Verzweigung ... 121 5.3 ... Der Bedingungsoperator ?: ... 124 5.4 ... Die mehrfache Verzweigung mit if und else if ... 125 5.5 ... Mehrfache Verzweigung mit switch ... 130 5.6 ... Logische Verknüpfungen ... 136 5.7 ... Kontrollfragen und Aufgaben ... 143 6. Schleifen -- Programmteile wiederholen ... 147 6.1 ... Die Zählschleife -- for ... 147 6.2 ... Die kopfgesteuerte while-Schleife ... 152 6.3 ... Die fußgesteuerte do-while-Schleife ... 154 6.4 ... Kontrolliertes Verlassen von Schleifen ... 157 6.5 ... Kontrollfragen und Aufgaben ... 161 7. Funktionen erstellen ... 163 7.1 ... Funktionen definieren ... 164 7.2 ... Funktionen aufrufen ... 165 7.3 ... Funktionsdeklaration (Vorausdeklaration) ... 166 7.4 ... Funktionsparameter ... 169 7.5 ... Rückgabewert von Funktionen ... 171 7.6 ... Exkurs: Funktionen bei der Ausführung ... 175 7.7 ... Inline-Funktionen ... 176 7.8 ... Rekursionen ... 177 7.9 ... Die main()-Funktion ... 179 7.10 ... Programme mit exit() beenden ... 182 7.11 ... Globale, lokale und statische Variablen ... 183 7.12 ... Kontrollfragen und Aufgaben ... 191 8. Präprozessor-Direktiven ... 193 8.1 ... Dateien einfügen mit #include ... 194 8.2 ... Konstanten und Makros mit #define und #undef ... 195 8.3 ... Bedingte Kompilierung ... 202 8.4 ... Programmdiagnose mit assert() ... 209 8.5 ... Generische Auswahl ... 211 8.6 ... Eigene Header erstellen ... 213 8.7 ... Kontrollfragen und Aufgaben ... 215 9. Arrays und Zeichenketten (Strings) ... 219 9.1 ... Was genau sind Arrays? ... 219 9.2 ... Mehrdimensionale Arrays ... 232 9.3 ... Strings (Zeichenketten) ... 239 9.4 ... Kontrollfragen und Aufgaben ... 249 10. Zeiger (Pointer) ... 251 10.1 ... Zeiger vereinbaren ... 251 10.2 ... Zeiger verwenden ... 252 10.3 ... Zugriff auf den Inhalt von Zeigern ... 255 10.4 ... Zeiger als Funktionsparameter ... 260 10.5 ... Zeiger als Rückgabewert ... 261 10.6 ... Zeigerarithmetik ... 264 10.7 ... Zugriff auf Array-Elemente über Zeiger ... 265 10.8 ... Arrays und Zeiger als Funktionsparameter ... 268 10.9 ... char-Arrays und Zeiger ... 271 10.10 ... Arrays von Zeigern ... 272 10.11 ... void-Zeiger ... 275 10.12 ... Typqualifizierer bei Zeigern ... 276 10.13 ... Zeiger auf Funktionen ... 281 10.14 ... Kontrollfragen und Aufgaben ... 285 11. Dynamische Speicherverwaltung ... 289 11.1 ... Neuen Speicher zur Laufzeit reservieren ... 290 11.2 ... Speicherblöcke vergrößern oder verkleinern ... 295 11.3 ... Speicherblöcke wieder freigeben ... 300 11.4 ... Kontrollfragen und Aufgaben ... 302 12. Komplexe Datentypen ... 305 12.1 ... Strukturen ... 306 12.2 ... Unions ... 333 12.3 ... Der Aufzählungstyp enum ... 336 12.4 ... Eigene Typen mit typedef deklarieren ... 338 12.5 ... Kontrollfragen und Aufgaben ... 340 13. Dynamische Datenstrukturen ... 343 13.1 ... (Einfach) verkettete Listen ... 343 13.2 ... Doppelt verkettete Listen ... 357 13.3 ... Kontrollfragen und Aufgaben ... 358 14. Eingabe- und Ausgabefunktionen ... 361 14.1 ... Verschiedene Streams und Standard-Streams ... 361 14.2 ... Dateien ... 364 14.3 ... Dateien öffnen ... 365 14.4 ... Dateien schließen ... 371 14.5 ... Fehler oder Dateiende prüfen ... 372 14.6 ... Weitere Funktionen für die Ein- und Ausgabe ... 374 14.7 ... Funktionen zur formatierten Ein-/Ausgabe ... 387 14.8 ... Wahlfreier Dateizugriff ... 400 14.9 ... Sicherere Funktionen mit C11 ... 404 14.10 ... Datei löschen oder umbenennen ... 405 14.11 ... Pufferung ... 405 14.12 ... Kontrollfragen und Aufgaben ... 407 15. Zeitroutinen (time.h) ... 411 15.1 ... Die Funktion clock() ... 411 15.2 ... Erweiterte Zeitfunktionen ... 413 A. Übersichtstabellen wichtiger Sprachelemente ... 427 A.1 ... Operatorpriorität (Operator Precedence) ... 427 A.2 ... Reservierte Schlüsselwörter in C ... 429 A.3 ... Header-Dateien der Standardbibliothek ... 430 A.4 ... Kommandozeilenargumente ... 432 A.5 ... Weiterführende Ressourcen ... 435 B. Lösungen der Übungsaufgaben ... 437 B.1 ... Antworten und Lösungen zu Kapitel 2 ... 437 B.2 ... Antworten und Lösungen zu Kapitel 3 ... 438 B.3 ... Antworten und Lösungen zu Kapitel 4 ... 438 B.4 ... Antworten und Lösungen zu Kapitel 5 ... 440 B.5 ... Antworten und Lösungen zu Kapitel 6 ... 443 B.6 ... Antworten und Lösungen zu Kapitel 7 ... 446 B.7 ... Antworten und Lösungen zu Kapitel 8 ... 448 B.8 ... Antworten und Lösungen zu Kapitel 9 ... 451 B.9 ... Antworten und Lösungen zu Kapitel 10 ... 456 B.10 ... Antworten und Lösungen zu Kapitel 11 ... 461 B.11 ... Antworten und Lösungen zu Kapitel 12 ... 465 B.12 ... Antworten und Lösungen zu Kapitel 13 ... 469 B.13 ... Antworten und Lösungen zu Kapitel 14 ... 474 B.14 ... Antworten und Lösungen zu Kapitel 15 ... 476 Index ... 481