Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Aus dem Lektorat
Inhaltsverzeichnis
Vorwort
Materialien zum Buch
1 Der Einstieg in die Welt von C
1.1 Die Sprache C
1.2 Die C-Standardbibliothek
1.2.1 Header-Dateien und Programmbibliothek
1.3 Die nötigen Werkzeuge für C
1.4 Übersetzen mit der Entwicklungsumgebung
1.5 Übersetzen mit GCC und Clang
1.6 Listings zum Buch
1.7 Kontrollfragen und Aufgaben im Buch
1.8 Aufgabe
2 Erste Schritte in C
2.1 Das erste Programm genauer betrachtet
2.2 Die Funktion printf()
2.3 Zeichensätze in C
2.3.1 Basis-Ausführungszeichensatz
2.3.2 Einige wichtige Escape-Sequenzen
2.4 Symbole in C
2.4.1 Bezeichner
2.4.2 Reservierte Schlüsselwörter
2.4.3 Literale
2.4.4 Einfache Begrenzer
2.5 Kommentare
2.6 Kontrollfragen und Aufgaben
3 Basisdatentypen in C
3.1 Variablen
3.2 Deklaration und Definition
3.3 Initialisierung und Zuweisung von Werten
3.4 Datentypen für Ganzzahlen
3.4.1 Vorzeichenlos und vorzeichenbehaftet
3.4.2 Suffixe für Ganzzahlen
3.5 Datentypen für Zeichen
3.5.1 Der Datentyp char
3.5.2 Der Datentyp wchar_t
3.5.3 Unicode-Unterstützung
3.6 Datentypen für Fließkommazahlen
3.6.1 Suffixe für Fließkommazahlen
3.6.2 Komplexe Gleitkommatypen
3.7 Boolescher Datentyp
3.8 Speicherbedarf mit sizeof ermitteln
3.9 Die Wertebereiche der Datentypen ermitteln
3.9.1 Limits von Integer-Typen
3.9.2 Limits von Fließkommazahlen
3.9.3 Integer-Typen mit fester Größe verwenden
3.9.4 Sicherheit beim Kompilieren mit static_assert
3.10 Konstanten erstellen
3.11 Lebensdauer und Sichtbarkeit von Variablen
3.12 void – ein unvollständiger Typ
3.13 Kontrollfragen und Aufgaben
4 Rechnen mit C und Operatoren
4.1 Werte formatiert einlesen mit scanf()
4.2 Operatoren
4.3 Arithmetische Operatoren
4.4 Der Inkrement- und der Dekrement-Operator
4.5 Bit-Operatoren
4.6 Implizite Typumwandlung
4.6.1 Arithmetische Umwandlung
4.6.2 Typpromotionen
4.7 Explizite Typumwandlung
4.8 Mathematische Funktionen in C
4.9 Kontrollfragen und Aufgaben
5 Bedingte Anweisungen und Verzweigungen
5.1 Bedingte Anweisungen
5.1.1 Bedingte Anweisungen mit if
5.1.2 Vergleichsoperatoren
5.1.3 Mini-Exkurs zum Anweisungsblock
5.2 Die alternative Verzweigung
5.3 Der Bedingungsoperator ?:
5.4 Die mehrfache Verzweigung mit if und else if
5.4.1 Verschachteln von Verzweigungen
5.5 Mehrfache Verzweigung mit switch
5.5.1 Austritt aus der Fallunterscheidung mit break
5.6 Logische Verknüpfungen
5.6.1 Der !-Operator
5.6.2 Der &&-Operator – Logisches UND
5.6.3 Der ||-Operator – Logisches ODER
5.7 Kontrollfragen und Aufgaben
6 Schleifen – Programmteile wiederholen
6.1 Die Zählschleife – for
6.2 Die kopfgesteuerte while-Schleife
6.3 Die fußgesteuerte do-while-Schleife
6.4 Kontrolliertes Verlassen von Schleifen
6.4.1 break
6.4.2 continue
6.5 Kontrollfragen und Aufgaben
7 Funktionen erstellen
7.1 Funktionen definieren
7.2 Funktionen aufrufen
7.3 Funktionsdeklaration (Vorausdeklaration)
7.4 Funktionsparameter
7.5 Rückgabewert von Funktionen
7.5.1 Die return-Anweisung
7.6 Exkurs: Funktionen bei der Ausführung
7.7 Inline-Funktionen
7.8 Rekursionen
7.9 Die main()-Funktion
7.9.1 Der Rückgabewert von main() an das Betriebssystem
7.10 Programme mit exit() beenden
7.11 Globale, lokale und statische Variablen
7.11.1 Lokale Variablen
7.11.2 Globale Variablen
7.11.3 Die Speicherklasse static
7.11.4 Die Speicherklasse extern
7.12 Kontrollfragen und Aufgaben
8 Präprozessor-Direktiven
8.1 Dateien einfügen mit #include
8.2 Konstanten und Makros mit #define und #undef
8.2.1 Symbolische Konstanten mit #define definieren
8.2.2 Makros mit #define definieren
8.2.3 Symbolische Konstanten und Makros aufheben (#undef)
8.3 Bedingte Kompilierung
8.3.1 Mehrfaches Inkludieren vermeiden
8.4 Programmdiagnose mit assert()
8.5 Generische Auswahl
8.6 Eigene Header-Dateien erstellen
8.7 Kontrollfragen und Aufgaben
9 Arrays und Zeichenketten (Strings)
9.1 Was genau sind Arrays?
9.1.1 Arrays definieren
9.1.2 Arrays mit Werten versehen und auf sie zugreifen
9.1.3 Initialisierung mit einer Initialisierungsliste
9.1.4 Bestimmte Elemente direkt initialisieren
9.1.5 Arrays mit Schreibschutz
9.1.6 Arrays mit fester und variabler Länge (VLA)
9.1.7 Arrays mit scanf einlesen
9.1.8 Arrays an Funktionen übergeben
9.2 Mehrdimensionale Arrays
9.2.1 Zweidimensionalen Arrays Werte zuweisen und auf sie zugreifen
9.2.2 Zweidimensionale Arrays an eine Funktion übergeben
9.2.3 Mehr als zwei Dimensionen verwenden
9.3 Strings (Zeichenketten)
9.3.1 Strings initialisieren
9.3.2 Strings einlesen
9.3.3 Unicode-Unterstützung
9.3.4 String-Funktionen der Standardbibliothek <string.h>
9.3.5 Sicherere Funktionen zum Schutz vor Speicherüberschreitungen
9.3.6 Umwandlungsfunktionen zwischen Zahlen und Strings
9.4 Kontrollfragen und Aufgaben
10 Zeiger (Pointer)
10.1 Zeiger vereinbaren
10.2 Zeiger verwenden
10.2.1 Explizite Typumwandlung für den byteweisen Zugriff
10.3 Zugriff auf den Inhalt von Zeigern
10.3.1 Der NULL-Zeiger
10.3.2 Deklaration, Adressierung und Dereferenzierung von Zeigern
10.4 Zeiger als Funktionsparameter
10.5 Zeiger als Rückgabewert
10.6 Zeigerarithmetik
10.7 Zugriff auf Array-Elemente über Zeiger
10.8 Arrays und Zeiger als Funktionsparameter
10.8.1 Der const-Array-Parameter
10.9 char-Arrays und Zeiger
10.10 Arrays von Zeigern
10.11 void-Zeiger
10.12 Typqualifizierer bei Zeigern
10.12.1 Konstanter Zeiger
10.12.2 Zeiger für konstante Daten
10.12.3 Konstante Zeiger und Zeiger für konstante Daten
10.12.4 Konstante Parameter für Funktionen
10.12.5 restrict-Zeiger
10.13 Zeiger auf Funktionen
10.14 Kontrollfragen und Aufgaben
11 Dynamische Speicherverwaltung
11.1 Neuen Speicher zur Laufzeit reservieren
11.2 Speicherblöcke vergrößern oder verkleinern
11.3 Speicherblöcke wieder freigeben
11.3.1 Memory Leaks (Speicherlecks)
11.4 Kontrollfragen und Aufgaben
12 Komplexe Datentypen
12.1 Strukturen
12.1.1 Strukturtypen deklarieren
12.1.2 Definition einer Strukturvariablen
12.1.3 Erlaubte Operationen auf Strukturvariablen
12.1.4 Deklaration und Definition zusammenfassen
12.1.5 Synonyme für Strukturtypen erstellen
12.1.6 Selektion von Komponenten einer Strukturvariablen
12.1.7 Strukturen initialisieren
12.1.8 Nur bestimmte Komponenten einer Strukturvariablen initialisieren
12.1.9 Zuweisung bei Strukturvariablen
12.1.10 Größe und Speicherausrichtung einer Struktur
12.1.11 Strukturen vergleichen
12.1.12 Strukturen, Funktionen und Strukturzeiger
12.1.13 Arrays von Strukturvariablen
12.1.14 Strukturvariablen als Komponenten in Strukturen
12.1.15 Zeiger als Komponenten in Strukturen
12.2 Unions
12.3 Der Aufzählungstyp enum
12.4 Eigene Typen mit typedef deklarieren
12.5 Kontrollfragen und Aufgaben
13 Dynamische Datenstrukturen
13.1 Einfach verkettete Listen
13.1.1 Ein neues Element in die Liste einfügen
13.1.2 Ein Element suchen und ausgeben
13.1.3 Ein Element aus der Liste entfernen
13.1.4 Das erste Element in der Liste löschen
13.1.5 Ein beliebiges Element in der Liste löschen
13.2 Doppelt verkettete Listen
13.3 Kontrollfragen und Aufgaben
14 Eingabe- und Ausgabefunktionen
14.1 Verschiedene Streams und Standard-Streams
14.1.1 Streams im Textmodus
14.1.2 Streams im binären Modus
14.1.3 Standard-Streams
14.2 Dateien
14.3 Dateien öffnen
14.3.1 Exklusiver Dateizugriff
14.3.2 Weitere Dateifunktionen
14.4 Dateien schließen
14.4.1 Das Limit für maximal geöffnete Dateien
14.5 Auf Fehler oder das Dateiende prüfen
14.5.1 Der End-of-File Indicator
14.5.2 Error Indicator
14.5.3 Informationen zum Fehler ausgeben
14.5.4 Fehler- und EOF-Flag zurücksetzen – clearerr()
14.6 Weitere Funktionen für die Ein- und Ausgabe
14.6.1 Einzelne Zeichen aus einem Stream lesen
14.6.2 Zeichen in den Stream zurückstellen
14.6.3 Einzelne Zeichen in einen Stream schreiben
14.6.4 Zeilenweise aus einem Stream lesen
14.6.5 Zeilenweise in einen Stream schreiben
14.6.6 Lesen und Schreiben in ganzen Blöcken
14.7 Funktionen zur formatierten Ein-/Ausgabe
14.7.1 Funktionen zur formatierten Ausgabe
14.7.2 Umwandlungsvorgaben für die printf-Familie
14.7.3 Weite und Feldbreite
14.7.4 Flags
14.7.5 Genauigkeitsangaben für Zahlen bei printf()
14.7.6 Funktionen für die formatierte Eingabe
14.7.7 Umwandlungsvorgaben für die scanf()-Familie
14.7.8 Suchmengenkonvertierung
14.8 Wahlfreier Dateizugriff
14.8.1 Die aktuelle Dateiposition ermitteln
14.8.2 Die aktuelle Dateiposition ändern
14.9 Sicherere Funktionen mit C11
14.10 Datei löschen oder umbenennen
14.11 Pufferung
14.12 Kontrollfragen und Aufgaben
15 Zeitroutinen (time.h)
15.1 Die Funktion clock()
15.2 Erweiterte Zeitfunktionen
15.2.1 Eine plattformunabhängige delay()-Funktion
15.2.2 Der Datentyp time_t
15.2.3 Der Datentyp struct tm
15.3 Kontrollfragen und Aufgaben
15.4 Schlusswort
A Übersichtstabellen wichtiger Sprachelemente
A.1 Operatorpriorität (Operator Precedence)
A.2 Reservierte Schlüsselwörter in C
A.3 Header-Dateien der Standardbibliothek
A.4 Kommandozeilenargumente
A.5 Weiterführende Ressourcen
B Lösungen der Übungsaufgaben
B.1 Antworten und Lösungen zu Kapitel 2
B.2 Antworten und Lösungen zu Kapitel 3
B.3 Antworten und Lösungen zu Kapitel 4
B.4 Antworten und Lösungen zu Kapitel 5
B.5 Antworten und Lösungen zu Kapitel 6
B.6 Antworten und Lösungen zu Kapitel 7
B.7 Antworten und Lösungen zu Kapitel 8
B.8 Antworten und Lösungen zu Kapitel 9
B.9 Antworten und Lösungen zu Kapitel 10
B.10 Antworten und Lösungen zu Kapitel 11
B.11 Antworten und Lösungen zu Kapitel 12
B.12 Antworten und Lösungen zu Kapitel 13
B.13 Antworten und Lösungen zu Kapitel 14
B.14 Antworten und Lösungen zu Kapitel 15
Stichwortverzeichnis
Rechtliche Hinweise
Über das Autorenteam
← Prev
Back
Next →
← Prev
Back
Next →