Systemnahe Programmierung in C: Inhaltsverzeichnis
Inhaltsverzeichnis
Algorithmen und Datenstrukturen in C
Gebrauchsanweisung
Kapitelübersicht
Literatur
Essentials
Lexikalische Einheiten
C-Präprozessor
Parameterübergabe
Modularisierung
Das Hauptprogramm
t1.c
t2.c
t3.c
t4.c
t5.c
Felder und Zeichenketten
Records
Syntax-Definition
Erweiterte Backus-Naur-Form
Einfache Datentypen
Syntax für einfache Datentypen
Wertebereiche
Variablen, Adressen und Zeiger
Typdefinitionen
Aufzählungs-Datentypen
Anweisungen
Syntax für Anweisungen
Anweisungen für einfache Verzweigungen
Anweisungen für Mehrweg-Verzweigungen
while- und do-Schleifen
for-Schleifen
Sprung-Anweisungen
Unstrukturierte Programmierung mit Sprüngen
Endrekursion, Sprünge und Schleifen
Zusicherungen
Ausdrücke
Syntax für Ausdrücke
Operatoren und Prioritäten
Semantik von Ausdrücken
Mischen von Operanden mit unterschiedlichen Typen
Auswertungsreihenfolge
Auswertungsreihenfolge 2
Prioritäten und Boolesche Ausdrücke
Ausdrucksfolgen
Prä-/Post- In-/Dekrement
Bit-Operationen
Bitstring-Operationen
Genauigkeit von Fließkomma-Arithmetik
Bedingte Ausdrücke
Der sizeof-Operator
Aus dem Museum: sizeof auf Intel 386
Aus dem Museum: sizeof auf Atari-ST
Felder und Zeiger
Syntax für Felder
Semantik von Felddeklarationen
Initialisierung
Zeigerarithmetik
Felder als Zeiger
Felder als Parameter
Schleife über alle Elemente eines Feldes
Felder und der sizeof-Operator
Dynamische Allokation von Feldern
Indizierung von Feldern
Typlose Zeiger
Felder und Zeichenreihen
Felder von Zeichenreihen
Mehrdimensionale Felder
Initialisierung mehrdimensionaler Felder
Zeigersalat
Obfuscated C
struct
und
union
Syntax für
struct
und
union
Definition von Strukturen
Initialisierung von Strukturen
Referenzieren von Komponenten
Rekursive Strukturen
Ausrichtung im Speicher
2. Maschinenarchitektur
Bitfelder
Parameterübergabe von Strukturen
Puzzle
Seltsame Fehler
Funktionen und Funktionszeiger
Funktionen als Parameter
Abstraktion mit Funktionen
Verändern von binären Bäumen
Trennung von Traversierung und Verarbeitung in binären Bäumen
Funktionszeiger in Daten
Dynamisches Binden durch Funktionszeiger
Speicher- und Allokationsklassen
static
und
auto
Sichtbarkeitsbereiche
Überdecken von Identifikatoren
Blockschachtelung
Im- und Export von Indentifikatoren
register
-Allokationsklasse
Ein- und Ausgabe
Tipps zu
scanf
C-Präprozessor
Von der Strukturierten zur Objektorientierten Programmierung
Unstrukturierte Programmierung
Prozeduren und Funktionen
Datenstrukturen: Feld und Verbund
Dynamische Datenstrukturen: Zeiger
Klassen
Vererbung
Dynamisches Binden
Typen als Parameter
Software-Engineering und C
Was sollte ein (C-)Entwickler beachten?
Der wenig kompetente Entwickler
Der kompetente Entwickler
Der gute Entwickler
C-Laufzeit-Bibliothek und header-Dateien
assert.h
float.h
errno.h
limits.h
stddef.h
stdio.h
stdlib.h
string.h
Algorithmen & Datenstrukturen in C
Mengen-Implementierungen
Primzahl-Test
String-Funktionen
strlen
strcpy
strcmp
Matrizen-Verarbeitung
Matrizen als eindimensionale Felder
Matrizen als Felder von Zeigern auf Felder
Matrizen mit Deskriptoren und Feldern von Zeigern auf Felder
Dynamische Datenstrukturen
Vergleich: Destruktive vs. persistente Listen
Verkettete Listen
Einfach verkettete Ringe
Binäre Suchbäume
Rot-Schwarz-Bäume
Binäre Patricia-Bäume
Vorrang-Warteschlangen
Hashtabellen
Schundliteratur und wie man sie erkennt
Inhaltsverzeichnis
Letzte Änderung: 21.05.2001
©
Prof. Dr. Uwe Schmidt