Vorwort
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Dieses Buch ist ein komplettes Nachschlagewerk für die Programmiersprache C und die C-Laufzeitbibliothek. Als "In a Nutshell"-Buch soll es C-Programmierern als praktischer, zuverlässiger Begleiter bei ihrer täglichen Arbeit dienen. Es beschreibt alle Elemente der Sprache und veranschaulicht ihre Verwendung mit zahlreichen Beispielen.
Die vorliegende Beschreibung der Sprache C basiert auf dem internationalen C-Standard von 2011, ISO/IEC 9899:2011, allgemein bekannt als C11. Diese Norm ersetzt die C99-Norm, ISO/IEC 9899:1999, und ihre technischen Berichtigungen, TC1 von 2001, TC2 von 2004 und TC3 von 2007. Die erste internationale C-Norm, ISO/IEC 9899:1990, wurde 1990 veröffentlicht und 1995 durch das Normative Addendum 1 (ISO/IEC 9899/AMD1:1995) ergänzt. Die ISO/IEC-Norm von 1990 entspricht der ANSI-Norm X3.159, die Ende 1989 ratifiziert wurde und gemeinhin als ANSI C oder C89 bezeichnet wird.
Die neuen Funktionen des C-Standards 2011 werden noch nicht von allen Compilern und Standardbibliotheksimplementierungen vollständig unterstützt. In diesem Buch haben wir daher die 2011-Features - wie z. B. Multithreading, typgenerische Makros und neue Standardbibliotheksfunktionen - mit der Abkürzung C11 gekennzeichnet. Erweiterungen, die durch den C99-Standard eingeführt wurden, sind mit der Abkürzung C99 gekennzeichnet.
Dieses Buch ist keine Einführung in die Programmierung in C. Obwohl es die Grundlagen der Sprache abdeckt, ist es nicht als Tutorial aufgebaut oder geschrieben. Wenn du neu in C bist, gehen wir davon aus, dass du mindestens eines der vielen Einführungsbücher gelesen hast oder mit einer verwandten Sprache wie Java oder C++ vertraut bist.
Wie dieses Buch organisiert ist
Dieses Buch ist in drei Teile gegliedert. Der erste Teil beschreibt die Sprache C im engeren Sinne, der zweite Teil beschreibt die Standardbibliothek und der dritte Teil beschreibt den Prozess des Kompilierens und Testens von Programmen mit den beliebten Werkzeugen der GNU-Software-Sammlung.
Teil I
Teil I, der sich mit der Sprache C beschäftigt, umfasst die Kapitel 1 bis 15. Nach Kapitel 1, in dem die allgemeinen Konzepte und Elemente der Sprache beschrieben werden, ist jedes Kapitel einem bestimmten Thema gewidmet, zum Beispiel Typen, Anweisungen oder Zeigern. Obwohl die Themen so geordnet sind, dass die grundlegenden Konzepte für jedes neue Thema bereits in einem früheren Kapitel vorgestellt wurden - Typen werden zum Beispiel vor Ausdrücken und Operatoren beschrieben, die wiederum vor Anweisungen kommen usw. - musst du manchmal Verweisen auf spätere Kapitel folgen, um die entsprechenden Details zu erfahren. So ist zum Beispiel eine Diskussion über Zeiger und Arrays in Kapitel 5 (das sich mit Ausdrücken und Operatoren befasst) notwendig, auch wenn Zeiger und Arrays erst in den Kapiteln 8 und 9 ausführlich beschrieben werden.
- Kapitel 1, "Grundlagen der Sprache"
-
Beschreibt die Merkmale der Sprache und wie C-Programme strukturiert und kompiliert werden. In diesem Kapitel werden grundlegende Konzepte wie die Übersetzungseinheit, Zeichensätze und Bezeichner vorgestellt.
- Kapitel 2, "Typen"
-
Bietet einen Überblick über die Typen in C und beschreibt die Grundtypen, den Typ
void
und die Aufzählungstypen. - Kapitel 3, "Literale"
-
Beschreibt numerische Konstanten, Zeichenkonstanten und Stringliterale, einschließlich Escape-Sequenzen.
- Kapitel 4, "Typkonvertierungen"
-
Beschreibt implizite und explizite Typkonvertierungen, einschließlich Integer-Promotion und die üblichen arithmetischen Konvertierungen.
- Kapitel 5, "Ausdrücke und Operatoren"
-
Beschreibt die Auswertung von Ausdrücken, alle Operatoren und ihre kompatiblen Operanden.
- Kapitel 6, "Erklärungen"
-
Beschreibt C-Anweisungen wie Blöcke, Schleifen und Sprünge.
- Kapitel 7, "Funktionen"
-
Beschreibt Funktionsdefinitionen und Funktionsaufrufe, einschließlich rekursiver und Inline-Funktionen.
- Kapitel 8, "Arrays"
-
Beschreibt Arrays mit fester und variabler Länge, einschließlich Strings, Array-Initialisierung und mehrdimensionale Arrays.
- Kapitel 9, "Zeiger"
-
Beschreibt die Definition und Verwendung von Zeigern auf Objekte und Funktionen.
- Kapitel 10, "Strukturen, Unions und Bit-Felder"
-
Beschreibt die Organisation der Daten in diesen benutzerdefinierten abgeleiteten Typen.
- Kapitel 11, "Erklärungen"
-
Beschreibt die allgemeine Syntax einer Deklaration, die Verknüpfung von Bezeichnern und die Dauer der Speicherung von Objekten.
- Kapitel 12, "Dynamische Speicherverwaltung"
-
Beschreibt die Funktionen der Standardbibliothek zur dynamischen Speicherverwaltung und veranschaulicht ihre Verwendung in einer Beispielimplementierung eines verallgemeinerten Binärbaums.
- Kapitel 13, "Input und Output"
-
Beschreibt das C-Konzept der Ein- und Ausgabe und gibt einen Überblick über die Verwendung der Standard-E/A-Bibliothek.
- Kapitel 14, "Multithreading"
-
Beschreibt die Verwendung der C11-Multithreading-Funktionen, einschließlich atomarer Operationen, Kommunikation zwischen Threads und thread-spezifischer Speicherung.
- Kapitel 15, "Vorverarbeitungsrichtlinien"
-
Beschreibt die Definition und Verwendung von Makros, die bedingte Kompilierung und alle anderen Präprozessor-Direktiven und Operatoren.
Teil II
Teil II, bestehend aus den Kapiteln 16, 17 und 18, ist der C-Standardbibliothek gewidmet. Er gibt einen Überblick über die Standard-Header und enthält außerdem eine detaillierte Funktionsreferenz.
- Kapitel 16, "Die Standard-Kopfzeilen"
-
Beschreibt den Inhalt der Header und ihre Verwendung. Die Header enthalten alle Makros und Typdefinitionen der Standardbibliothek.
- Kapitel 17, "Funktionen im Überblick"
-
Bietet einen Überblick über die Funktionen der Standardbibliothek, geordnet nach Anwendungsbereichen (z. B. mathematische Funktionen, Datums- und Zeitfunktionen usw.).
- Kapitel 18, "Funktionen der Standardbibliothek"
-
Beschreibt jede Funktion der Standardbibliothek detailliert in alphabetischer Reihenfolge und enthält Beispiele, um die Verwendung der einzelnen Funktionen zu veranschaulichen.
Teil III
Der dritte Teil dieses Buches, der die Kapitel 19 bis 20 umfasst, vermittelt das notwendige Wissen über die grundlegenden Werkzeuge des C-Programmierers: den Compiler, das Make-Utility und den Debugger. Die hier beschriebenen Werkzeuge stammen aus der GNU-Software-Sammlung. Schließlich wird die Verwendung dieser Werkzeuge in einer integrierten Entwicklungsumgebung (IDE) für C am Beispiel der Eclipse IDE beschrieben.
- Kapitel 19, "Kompilieren mit dem GCC"
-
Beschreibt die wichtigsten Funktionen, die der weit verbreitete Compiler für C-Programmierer bietet.
- Kapitel 20, "Mit make C-Programme erstellen"
-
Beschreibt, wie man das make-Programm verwendet, um den Kompilierungsprozess für große Programme zu automatisieren.
- Kapitel 21, "C-Programme mit GDB debuggen"
-
Beschreibt, wie man ein Programm unter der Kontrolle des GNU-Debuggers ausführt und wie man das Laufzeitverhalten von Programmen analysiert, um logische Fehler zu finden.
- Kapitel 22, "Verwendung einer IDE mit C"
-
Beschreibt die Verwendung einer integrierten Entwicklungsumgebung (IDE) für einen einheitlichen, bequemen Zugriff auf alle Werkzeuge zur Entwicklung von C-Programmen.
Weitere Lektüre
Unter gibt es neben den Werken, die an den entsprechenden Stellen im Text erwähnt werden, eine Reihe von Ressourcen für Leser, die mehr technische Details wünschen, als selbst dieses Buch bieten kann. Die internationale Arbeitsgruppe zur C-Standardisierung hat eine offizielle Homepage unter http://www.open-std.org/jtc1/sc22/wg14, mit Links zur neuesten Version des C-Standards und zu aktuellen Projekten der Arbeitsgruppe.
Für Leser, die sich nicht nur für das"Was" und "Wie" von C interessieren, sondern auch für das "Warum", bietet die Website der WG14 auch Links zu einigen ihrer Entwürfe und Begründungen. In diesen Dokumenten werden einige der Beweggründe und Zwänge beschrieben, die mit dem Standardisierungsprozess verbunden sind. Für diejenigen, die sich fragen, wie C überhaupt "so geworden ist", hat der Erfinder von C, der verstorbene Dennis Ritchie, einen Artikel mit dem Titel "The Development of the C Language" geschrieben . Dieser und andere historische Dokumente sind immer noch auf seiner Bell Labs Website https://www.bell-labs.com/usr/dmr/www/index.html verfügbar .
Leser, die mehr über die Fließkomma-Mathematik wissen wollen, als in C möglich ist, sollten mit David Goldbergs gründlicher Einführung "What Every Computer Scientist Should Know About Floating-Point Arithmetic" beginnen, die derzeit online unter http://docs.sun.com/source/806-3568/ncg_goldberg.html verfügbar ist .
In diesem Buch verwendete Konventionen
Die folgenden typografischen Konventionen werden in diesem Buch verwendet:
- Kursiv
-
Hebt neue Begriffe hervor; gibt Dateinamen, Dateierweiterungen, URLs, Verzeichnisse und Unix-Dienstprogramme an.
Constant width
-
Bezeichnet alle Elemente des C-Quellcodes: Schlüsselwörter, Operatoren, Variablen, Funktionen, Makros, Typen, Parameter und Literale. Wird auch für Konsolenbefehle und -optionen sowie für die Ausgabe solcher Befehle verwendet.
Constant width bold
-
Hebt die zu besprechende Funktion oder Anweisung in Codebeispielen hervor. In Compiler-, Make- und Debugger-Sitzungen zeigt diese Schriftart Befehlseingaben an, die vom Benutzer wörtlich eingegeben werden müssen.
Constant width italic
-
Kennzeichnet Parameter in Funktionsprototypen oder Platzhalter, die du durch deine eigenen Werte ersetzen kannst.
- Klartext
-
Bezeichnet Tasten wie Return, Tabulator und Strg.
Tipp
Dieses Element steht für einen Tipp oder eine Anregung.
Hinweis
Dieses Element steht für einen allgemeinen Hinweis.
Warnung
Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.
Code-Beispiele verwenden
Zusätzliches Material (Code-Beispiele, Übungen usw.) steht unter https://github.com/oreillymedia/c-in-a-nutshell-2E zum Download bereit .
Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Wenn in diesem Buch Beispielcode angeboten wird, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Wenn du eine CD-ROM mit Beispielen aus den O'Reilly-Büchern verkaufst oder verteilst, ist eine Genehmigung erforderlich. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eine Erlaubnis erforderlich.
Wir schätzen die Namensnennung, verlangen sie aber nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Zum Beispiel: "C in a Nutshell, 2nd Edition von Peter Prinz und Tony Crawford (O'Reilly). Copyright 2016 Peter Prinz, Tony Crawford, 978-1-491-90475-6."
Wenn du der Meinung bist, dass die Verwendung von Code-Beispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter permissions@oreilly.com kontaktieren .
Safari® Bücher Online
Hinweis
Safari Books Online ist eine digitale On-Demand-Bibliothek, die Experteninhalte in Buch- und Videoform von weltweit führenden Autoren aus den Bereichen Technologie und Wirtschaft liefert.
Technologieexperten, Softwareentwickler, Webdesigner sowie Geschäfts- und Kreativprofis nutzen Safari Books Online als Hauptressource für Recherchen, Problemlösungen, Lernen und Zertifizierungsschulungen.
Safari Books Online bietet eine Reihe von Plänen und Preisen für Unternehmen, Behörden, Bildungseinrichtungen und Privatpersonen.
Mitglieder haben Zugang zu Tausenden von Büchern, Schulungsvideos und Manuskripten von Verlagen wie O'Reilly Media, Prentice Hall Professional, Addison-Wesley Professional, Microsoft Press, Sams, Que, Peachpit Press, Focal Press, Cisco Press, John Wiley & Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT Press, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett, Course Technology und Hunderten mehr in einer vollständig durchsuchbaren Datenbank. Wenn du mehr über Safari Books Online erfahren möchtest, besuche uns bitte online.
Wie du uns kontaktierst
Bitte wende dich mit Kommentaren und Fragen zu diesem Buch an den Verlag :
- O'Reilly Media, Inc.
- 1005 Gravenstein Highway Nord
- Sebastopol, CA 95472
- 800-998-9938 (in den Vereinigten Staaten oder Kanada)
- 707-829-0515 (international oder lokal)
- 707-829-0104 (Fax)
Wir haben unter eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter http://bit.ly/C_Nutshell_2e aufrufen .
Wenn du Kommentare oder technische Fragen zu diesem Buch stellen möchtest, sende eine E-Mail an bookquestions@oreilly.com.
Weitere Informationen zu unseren Büchern, Kursen, Konferenzen und Neuigkeiten findest du auf unserer Website unter http://www.oreilly.com.
Finde uns auf Facebook: http://facebook.com/oreilly
Folge uns auf Twitter: http://twitter.com/oreillymedia
Schau uns auf YouTube: http://www.youtube.com/oreillymedia
Danksagungen
Wir beide möchten uns bei allen Mitarbeitern von O'Reilly für die fantastische Arbeit an unserem Buch bedanken, insbesondere bei unseren Redakteuren Rachel Roumeliotis und Katie Schooling für ihre Unterstützung auf diesem Weg. Wir danken auch unseren technischen Gutachtern, Matt Crawford, David Kitabjian, Chris LaPre, John C. Craig und Loïc Pefferkorn, für ihre wertvolle Kritik an unserem Manuskript, und wir sind unserer Produktionsredakteurin Kristen Brown und unserer Lektorin Gillian McGarvey dankbar für ihre Bemühungen, unser Buch gut aussehen zu lassen und unseren Stil auf den neuesten Stand zu bringen. Und schließlich danken wir Jonathan Gennick dafür, dass er das ganze Projekt vor all den Jahren ins Rollen gebracht hat.
Peter
Ich möchte mich vor allem bei Tony für die hervorragende Zusammenarbeit bedanken. Mein herzlicher Dank gilt auch all meinen Freunden für das Verständnis, das sie immer wieder zeigten, wenn ich so wenig Zeit für sie hatte. Nicht zuletzt widme ich dieses Buch meinen Töchtern Vivian und Jeanette - beide sind inzwischen Doktorandinnen der Informatik -, die mich in meinem Ehrgeiz bestärkt haben, dieses Buchprojekt zu verwirklichen.
Tony
Ich danke Peter, dass er mir den ganzen Platz überlassen hat, den ich in diesem Projekt füllen konnte.
Get C in a Nutshell, 2. Auflage now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.