Die Programmiersprache C

Die Computersprache C ist schon mit einem rassigen Sportwagen verglichen worden. Dieser Vergleich liegt auch nahe: Beide sind klein, wendig, bieten hohe Leistung und lassen sich mit großer Eleganz und trotzdem rasant aufs Ziel zusteuern. Und ebenso wie der Lenker eines sportlichen Fahrzeugs durch harte Federung und kerniges Motorgeräusch in die maschinelle Funktion mit einbezogen wird, kann man mit den maschinennahen Elementen der Sprache die Funktionsweise des Computers gewissermaßen hautnah nachvollziehen, und zwar an strukturiertem Programmtext.

Wie der Sportwagenfahrer muß aber auch der C-Programmierer darauf achten, daß er auf seinem Weg nicht zu viele Ecken abschneidet. Wie beim blechernen Vergleichsobjekt könnte das Ergebnis ein unentwirrbarer Knäuel sein, der dann auf dem Schrottplatz (sprich: im Papierkorb) möglicherweise am besten aufgehoben ist.

Martin Stübs

Durch den ANSI-Standard ist die Federung deutlich besser geworden - bei unverändert guter Straßenlage.

Der Autor


Inhaltsverzeichnis:

Vorwort

1	Einleitung
1.1	Einordnung von C
1.2	Programmstruktur und grundlegende Eigenschaften
1.3	Hinweise zur Verwendung des Buchs

2	Wie man C-Programmierung beginnt
2.1	Das erste C-Programm
2.2	Berechnungen und Funktionsaufruf
2.3	Allgemeines über Deklarationen und Definitionen
2.4	Bedingte Ausführung und Programmschleifen
2.5	Zusammenfassung

3	Elemente der Syntax
3.1	Beschreibung der Metasprache
3.2	Liste der Syntaxelemente

4	Typen, Speicherklassen, Variablen und Konstanten
4.1	Typen und Definitionen
4.1.1	Numerische Typen und Variablendefinition
4.1.2	Typattribute
4.1.3	Array-Definition
4.1.4	Aufzählungstypen
4.1.5	Typumbenennungen mit typedef
4.1.6	Funktionsdefinitionen und -deklarationen
4.2	Namen, Speicherklassen und Initialisierung
4.2.1	Speicherklassen
4.2.2	Initialisierung
4.3	Konstanten

5	Operatoren und Ausdrücke
5.1	Typkonvertierung in Ausdrücken
5.2	Unäre Operatoren
5.3	Arithmetische Operatoren
5.4	Logische Operatoren
5.5	Bitweise Operatoren
5.6	Bedingter-Ausdruck-Operator
5.7	Zuweisungsoperatoren
5.8	Weitere Operatoren
5.9	Hierarchie und Gruppierung der Operatoren

6	Die C-Anweisungen
6.1	Die Zuweisung und die Ausdrucks-Anweisung
6.1.1	Wert einer Zuweisung
6.1.2	Typkonvertierung bei Zuweisungen
6.1.3	Zusammengesetzte Zuweisungsoperatoren
6.1.4	Inkrement-/Dekrement-Anweisungen
6.2	Zusammengesetzte Anweisungen und Blockstruktur
6.3	Die if-Anweisung
6.4	switch- und break-Anweisung
6.5	Die while-Anweisung
6.6	Die for-Anweisung
6.7	Die do-while-Anweisung
6.8	Die continue-Anweisung
6.9	Die return-Anweisung
6.10	Marken und goto-Anweisung
6.11	Die leere Anweisung

7	Funktionen und Programmstruktur
7.1	Schreibweise und Stellung im Programm
7.1.1	Funktionen und ihre Definition
7.1.2	Funktionsdeklaration und Prototypen
7.1.3	Funktionsaufruf
7.2	Kontrollfluß
7.3	Übergabe von Werten an Funktionen
7.4	Rekursive Funktionen

8	Pointer
8.1	Schreibweise und Umgang mit Pointern
8.2	Pointerarithmetik
8.3	Pointer und Arrays
8.4	Pointer als Funktionsparameter
8.5	Pointer-Arrays
8.6	Pointer auf Funktionen
8.7	Funktionsparameter der main-Funktion

9	Strukturen
9.1	Umgang mit Strukturen
9.1.1	Definition von Strukturtypen und Strukturen
9.1.2	Initialisierung von Strukturen
9.1.3	Referieren der Strukturkomponenten
9.2	Pointer auf Strukturen
9.3	Arrays von Strukturen
9.4	Der sizeof-Operator
9.5	Selbstreferierende Strukturtypen
9.6	Bit-Fields
9.7	Unions

10	Der C-Preprocessor
10.1	Ersetzen von Namen und Makros
10.1.1	Definition symbolischer Konstanten
10.1.2	Parametrisierte Namensersetzung (Makros)
10.1.3	Namensersetzung unwirksam machen
10.2	Einbinden anderer Quelldateien
10.3	Bedingte Übersetzung von Programmteilen
10.4	Zeilennummernkontrolle
10.5	Fehlermeldungen, Pragmas und Nulldirektiven
10.6	Vordefinierte Namen

11	Standardbibliothek für Ein-/Ausgabe
11.1	Standardein-/-ausgabebibliothek und 
11.2	Ein-/Ausgabe von/nach Standardein-/-ausgabe
11.2.1	Zeichenweise Ein-/Ausgabe mit getchar und putchar
11.2.2	Formatierte Ausgabe mit printf
11.2.3	Formatierte Eingabe mit scanf
11.2.4	Formatierung im Speicher
11.3	Dateizugriff
11.3.1	Philosophie der UNIX- und MS-DOS-Dateien
11.3.2	Eröffnen von Dateien
11.3.3	Zeichen- und wortweise Ein-/Ausgabe
11.3.4	Zeilenweise Ein-/Ausgabe mit gets, puts, fgets und fputs
11.3.5	Objektweise Ein-/Ausgabe mit fread und fwrite
11.3.6	Formatierte Ein-/Ausgabe mit Dateien
11.3.7	Direkter Zugriff
11.3.8	Ein-/Ausgabepuffer-Kontrolle
11.3.9	Entleeren des Ausgabepuffers
11.3.10	Schließen von Dateien
11.3.11	Weitere Dateioperationen
11.4	Zwischenspeichern in Temporärdateien
11.4.1	System-Temporärdateien
11.4.2	Selbstverwaltete Temporärdateien
11.5	Datentransfer zwischen Prozessen über Pipes
11.5.1	Eröffnen von Pipes und Starten des zweiten Prozesses
11.5.2	Schließen von Pipes
11.6	Status- und Fehlerabfragen, Fehlermeldungen

12	Weitere Standardbibliotheksfunktionenen
12.1	Zeichenklassifizierungs- und -konvertierungsfunktionen
12.1.1	Klassifizierung von Zeichen
12.1.2	Konvertierungsfunktionen
12.2	String- und Speicherbehandlungsfunktionen
12.2.1	Stringfunktionen
12.2.2	Speicherbehandlung
12.3	Mathematische Funktionen
12.3.1	Arithmetische Funktionen
12.3.2	Transzendente Funktionen
12.3.3	Rundungsfunktionen
12.3.4	Trigonometrische Funktionen
12.3.5	Gleitkommazahlen-Manipulation
12.3.6	Fehlerbehandlung bei mathematischen Funktionen
12.4	Dienstleistungsfunktionen
12.4.1	Konvertierung von Strings in Zahlen
12.4.2	Pseudo-Zufallszahlengeneratoren
12.4.3	Speicherzuweisungsoperationen
12.4.4	Schnittstellen zur Programmumgebung
12.4.5	Suchen und Sortieren in Arrays
12.4.6	Ganzzahlige mathematische Funktionen
12.5	Überprüfen von Behauptungen, Fehlersuche
12.6	Nichtlokale Sprünge
12.7	Signale
12.8	Datum und Uhrzeit
12.9	Variable Parameterlisten
12.10	Grenzwerte in  und 

13	Schnittstellen zum UNIX-Betriebssystem
13.1	Ein-/Ausgabe
13.1.1	Dateieröffnung und -kreierung
13.1.2	Lesen und Schreiben
13.1.3	Direkter Zugriff
13.1.4	Schließen von Dateien
13.2	Weitere Systemaufrufe
13.2.1	Dateiverwaltung
13.2.2	Prozeßverwaltung
13.2.3	Interprozeßkommunikation, Networking und
	sonstige Informationen

14	Programmierstil

15	Bedienung der Programmierumgebung
15.1	Erstellen von Quelldateien
15.1.1	Formatieren von Quellprogrammen
15.1.2	Referenz-Verweis-Listen von Quellprogrammen
15.1.3	Kontrollflußdiagramme von Quellprogrammen
15.2	Compilieren und Linken von C-Programmen

16	Das Testen von C-Programmen
16.1	Prüfung von C-Programmen mit lint
16.2	Modultest
16.3	Debugging mit dem symbolischen Debugger sdb
16.4	Debugging mit dem Preprocessor
16.4.1	Unterbrechen der Ausführung
16.4.2	Bedingte Unterbrechung der Ausführung
16.4.3	Anzeigen und Ändern von Werten
16.4.4	Überspringen von Anweisungen
16.4.5	Anzeigen der Schleifenaufrufe mit Schleifenzählern
16.4.6	Anzeigen der Aufrufreihenfolge von Funktionen

17	Fehlermeldungen

Anhang 1: Kurzliste der Anweisungen

Anhang 2: Operatorenübersicht

Anhang 3: Kurzliste der Funktionen

Anhang 4: ASCII-Code-Tabelle

Stichwortverzeichnis

Zurück zur Bücherübersicht