Jürgen Wolf, René Krooß
Grundkurs C
C-Programmierung verständlich erklärt. Aktuell zum Standard C18. Ideal fürs Studium
Jürgen Wolf, René Krooß
Grundkurs C
C-Programmierung verständlich erklärt. Aktuell zum Standard C18. Ideal fürs Studium
- Broschiertes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
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…mehr
Andere Kunden interessierten sich auch für
- Jürgen WolfGrundkurs C++14,90 €
- Jörg WiegelmannSoftwareentwicklung in C für Mikroprozessoren und Mikrocontroller44,00 €
- Markus NeumannC Programmieren für Einsteiger14,99 €
- Markus A. MathesProgrammieren in C++ für Elektrotechniker und Mechatroniker37,99 €
- Dirk W. HoffmannTheoretische Informatik42,99 €
- Richard KaiserC++ mit Visual Studio 2022 und Windows Forms-Anwendungen84,99 €
- Dieter NellesGrundlagen der Elektrotechnik zum Selbststudium38,00 €
-
-
-
-
-
-
-
-
-
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 SchleifenFunktionenPräprozessor-Direktiven Arrays und ZeichenkettenZeiger Dynamische Speicherverwaltung Dynamische Datenstrukturen Eingabe- und Ausgabe-FunktionenAktueller ISO-Standard C18
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 SchleifenFunktionenPräprozessor-Direktiven Arrays und ZeichenkettenZeiger Dynamische Speicherverwaltung Dynamische Datenstrukturen Eingabe- und Ausgabe-FunktionenAktueller ISO-Standard C18
Produktdetails
- Produktdetails
- Rheinwerk Computing
- Verlag: Rheinwerk Computing / Rheinwerk Verlag
- Artikelnr. des Verlages: 459/07689
- 3. Aufl.
- Seitenzahl: 487
- Erscheinungstermin: Oktober 2020
- Deutsch
- Abmessung: 190mm x 126mm x 30mm
- Gewicht: 539g
- ISBN-13: 9783836276894
- ISBN-10: 3836276895
- Artikelnr.: 60034105
- Herstellerkennzeichnung
- Rheinwerk Publishing Inc.
- 2 Heritage Drive
- 11201 Quincy, MA, US
- Info@rheinwerk-verlag.de
- www.rheinwerk-verlag.de
- Rheinwerk Computing
- Verlag: Rheinwerk Computing / Rheinwerk Verlag
- Artikelnr. des Verlages: 459/07689
- 3. Aufl.
- Seitenzahl: 487
- Erscheinungstermin: Oktober 2020
- Deutsch
- Abmessung: 190mm x 126mm x 30mm
- Gewicht: 539g
- ISBN-13: 9783836276894
- ISBN-10: 3836276895
- Artikelnr.: 60034105
- Herstellerkennzeichnung
- Rheinwerk Publishing Inc.
- 2 Heritage Drive
- 11201 Quincy, MA, US
- Info@rheinwerk-verlag.de
- www.rheinwerk-verlag.de
Jürgen Wolf ist seit über 16 Jahren Autor und seit mehr als 10 Jahren passionierter Digitalfotograf. Seine Buchthemen sind Bildbearbeitung, Fotografie, Webentwicklung, Betriebssysteme und Programmierung. Und egal welches Thema: Bei jedem Buch ist es sein Ziel, auch komplexe Zusammenhänge klar und verständlich zu erklären.
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
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
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
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
»Dieses C Buch macht einen wirklich sehr guten Eindruck, dank seiner guten Strukturierung und dazu noch einem geringen Preis. [...] Somit besitzt du am Schluss das Wissen über die Grundlagen, welche dir bei deinen Projekten weiterhelfen werden. Ein Experte wirst du zwar noch nicht sein, allerdings kommst du immer näher in diese Richtung.« Programmierbuch.de 202012