Die Programmiersprache C wurde Anfang der siebziger Jahre (1972) von Dennis M. Ritchie in den Bell Laboratories entwickelt, im Zusammenhang mit der Implementation des Betriebssystems UNIX auf der Rechenanlage DEC PDP-ll. Viele wichtige, in C verwirklichte Ideen entstammen allerdings der Sprache B, die von Ken Thompson (1970) für das erste UNIX-System auf der DEC PDP-7 geschrieben wurde, die wiederum ihren Ursprung in der von Martin Richards entwickelten Sprache BCPL (1967) hat. Fast das gesamte Betriebssystem UNIX ist in C geschrieben. Mittlerweile wird C nicht nur unter UNIX, sondern auch unter anderen Betriebssystemen eingesetzt. Der Grund für die zunehmende Beliebtheit von C sind Portabilität, d. h. die Lauffähigkeit der Programme ohne Änderungen auf den verschiedensten Rechnern, und breite Anwendungsmöglichkeiten, die wiederum die Folge von mehreren Faktoren sind: - C besitzt moderne, hochsprachliche Steuerstrukturen, wie etwa die Sprachen Ada, PLll und Pascal. - In C kann man Bits, Bytes und Zeichenketten manipulieren, wie mit einem Assembler, aber auch Zeiger und strukturierte Datentypen verwenden. - C ist vom Umfang her eine kleine, leicht erlernbare Sprache (32 Schlüsselwörter, Basic über 150!). - C ermöglicht weitgehend redundanz-freien Quellcode, d. h. C-Programme sind de- lich kürzer als Programme in anderen Sprachen. Dieses alles sind Forderungen, die man an eine Sprache stellt, in der Betriebssysteme, Compiler oder professionelle Anwenderprogramme geschrieben werden sollen. Daher wird C auch als "die Sprache der Programmierer" bezeichnet.
Inhaltsverzeichnis
1 Einführung. - 1. 1 Aufbau von C-Programmen. - 1. 2 Ein erstes C-Programm. - 1. 3 Verarbeitung numerischer Daten. - 1. 4 Lesen bis zum Ende. - 1. 5 Speicherung von Werten. - 1. 6 Strukturierung des Programms. - 1. 7 Die Darstellung von Programmen. - 2 Numerische Datentypen und Ausdrücke. - 2. 1 Definitionen. - 2. 2 Standardtypen. - 2. 3 Konstanten. - 2. 4 Deklaration von Variablen, Anfangswerte. - 2. 5 Benennung von Typen. - 2. 6 Arithmetische Operatoren. - 2. 7 Zuweisungsoperatoren. - 2. 8 Inkrementierung und Dekrementierung. - 2. 9 Nebeneffekte. - 2. 10 Konstante Ausdrücke. - 2. 11 Overflow und Underflow. - 3 Anweisungen. - 3. 1 Ausdruckanweisungen. - 3. 2 Zusammengesetzte Anweisungen. - 3. 3 Leere Anweisungen. - 3. 4 Logische Ausdrücke. - 3. 5 Schleifen. - 3. 6 Auswahl von Alternativen. - 3. 7 Sprünge. - 4 Funktionen und Programmstruktur. - 4. 1 Funktionen. - 4. 2 Die Struktur des Programms. - 4. 3 Verfügbarkeit von Variablen. - 4. 4 Rekursion. - 4. 5 Synchronisationspunkte. - 5 Felder und Zeiger. - 5. 1 Felder. - 5. 2 Adressrechnung. - 5. 3 Zeiger. - 5. 4 Zeigerarithmetik. - 5. 5 Felder als Parameter von Funktionen. - 5. 6 Strings. - 5. 7 Explizite Anfangswerte. - 5. 8 Das Attribut const. - 5. 9 Zeiger auf Zeiger. - 5. 10 Zeiger als Funktionswerte. - 5. 11 Dynamische Speicherzuordnung. - 5. 12 Zeiger auf Funktionen. - 6 Strukturen und Zeiger. - 6. 1 Strukturen. - 6. 2 Geschachtelte strukturierte Typen. - 6. 3 Zeiger auf Strukturen. - 6. 4 Verkettete Listen. - 6. 5 Partielle und vollständige Deklaration. - 6. 6 Mehr über verkettete Listen. - 6. 7 (Binäre) Bäume. - 7 Der Präprozessor. - 7. 1 Format der Direktiven. - 7. 2 Zugriff auf (andere) Dateien. - 7. 3 Macros ohne Parameter. - 7. 4 Macros mit Parametern. - 7. 5 Bedingte Compilation. - 7. 6 Präprozessor-Operatoren. - 7. 7 Weitere Direktiven. - 8 Die Standardbibliothek. - 8. 1 Übersicht. - 8. 2 Elementare Typen (). - 8. 3Testhilfen (). - 8. 4 Klassifizierung von Zeichen (). - 8. 5 Fehlernummern (). - 8. 6 Interne Datenformate ( und ). - 8. 7 Länderspezifische Darstellungen und Zeichen (). - 8. 8 Mathematische Funktionen (). - 8. 9 Sprünge zwischen Funktionen (). - 8. 10 Behandlung von Signalen (). - 8. 11 Funktionen mit variabler Argumentzahl (). - 8. 12 Diverse Hilfsroutinen (). - 8. 13 Stringverarbeitung (). - 8. 14 Termine und Zeiten (). - 9 Ein-/Ausgabe. - 9. 1 Grundlagen. - 9. 2 Zuordnung von Dateien. - 9. 3 Verwaltung der Dateipuffer. - 9. 4 Formatierte Eingabe. - 9. 5 Formatierte Ausgabe. - 9. 6 Ein-/Ausgabe von Zeichen(folgen). - 9. 7 Binäre Ein-/Ausgabe. - 9. 8 Positionierung von Dateien. - 9. 9 Behandlung von Fehlern. - 9. 10 Verwaltung von Betriebssystem-Dateien. - 10 Was es sonst noch gibt. - 10. 1 Weitere Datenattribute. - 10. 2 Verbunde. - 10. 3 Verarbeitung von Bits. - 10. 4 Der Komma-Operator. - Anhang A Der Zeichensatz von C. - Anhang B Schlüsselwörter. - Anhang C Operator Übersicht. - Anhang D Formatierung. - D. 1 Formatierung der Eingabe. - D. 2 Formatierung der Ausgabe. - Anhang E Minimale Maxima. - E. 1 Schranken für das Quellprogramm. - E. 2 Schranken für die Wertebereiche. - Anhang F Die Syntax von C. - F. 1 Namen. - F. 2 Konstanten. - F. 3 Ausdrücke. - F. 4 Deklarationen. - F. 5 Anweisungen. - F. 6 Externdeklarationen. - F. 7 Syntax des Präprozessors. - Anhang G Syntaxdiagramme. - G. 1 Namen. - G. 2 Konstanten. - G. 3 Ausdrücke. - G. 4 Deklarationen. - G. 5 Anweisungen. - G. 6 Externdeklarationen. - Anhang H Unterschiede zwischen altem C und ANSI-C. - Anhang I Erste Schritte mit UNIX. - I. 1 Ein- und Ausloggen, Passwort. - I. 2 Das Dateisystem. - I. 3 Verwaltung von Dateien. - I. 4 Bearbeitung von Textdateien. - I. 5 Übersetzen von C-Programmen. - I. 6 Das Programm make. - L7 Umleitung der Standard-Ein-/Ausgabe. - Literatur.