Warnung
Dies ist eine Liste von zufälligen Büchern unterschiedlicher Qualität. Nach Ansicht einiger Leute (mit einigem Recht) handelt es sich nicht mehr um eine Liste empfohlener Bücher. Einige der aufgelisteten Bücher enthalten offensichtlich falsche Aussagen oder lehren falsche / schädliche Praktiken. Personen, die solche Bücher kennen, können diese Antwort bearbeiten, um sie zu verbessern. Siehe Die C-Buchliste ist durcheinander geraten. Was soll man damit machen? und auch Audit für gelöschte Fragen 2018 .
Referenz (Alle Ebenen)
Die Programmiersprache C (2. Auflage) - Brian W. Kernighan und Dennis M. Ritchie (1988). Immer noch eine gute, kurze, aber vollständige Einführung in C (C90, nicht C99 oder spätere Versionen), geschrieben vom Erfinder von C. Die Sprache hat sich jedoch geändert und in den letzten 25 Jahren hat sich ein guter C-Stil entwickelt, und es gibt Teile von das Buch, das sein Alter zeigt.
C: Ein Referenzhandbuch (5. Auflage) - Samuel P. Harbison und Guy R. Steele (2002). Ein ausgezeichnetes Nachschlagewerk über C bis einschließlich C99. Es ist kein Tutorial und wahrscheinlich nicht für Anfänger geeignet. Es ist großartig, wenn Sie einen Compiler für C schreiben müssen, wie es die Autoren zu Beginn tun mussten.
C Taschenreferenz (O'Reilly) - Peter Prinz und Ulla Kirch-Prinz (2002).
Die comp.lang.c FAQ - Steve Summit. Website mit Antworten auf viele Fragen zu C.
Verschiedene Versionen der C-Sprachstandards finden Sie hier . Es gibt eine Online-Version des Entwurfs des C11-Standards .
Der neue C-Standard - eine kommentierte Referenz (kostenloses PDF) - Derek M. Jones (2009). Der "neue Standard", auf den Bezug genommen wird, ist der alte C99-Standard und nicht C11.
Begründung für den C99-Standard .
Anfänger
Mittlere
Modernes C - Jens Gustedt (2017 1. Ausgabe; 2020 2. Ausgabe). Deckt C in 5 Ebenen (Begegnung, Bekanntschaft, Erkenntnis, Erfahrung, Ehrgeiz) von Anfang C bis Fortgeschrittene C ab. Es behandelt C11 und C17, einschließlich Threads und atomaren Zugriff, wie es nur wenige andere Bücher tun. Nicht alle Compiler erkennen diese Funktionen in allen Umgebungen.
C Schnittstellen und Implementierungen - David R. Hanson (1997). Bietet Informationen zum generischen und wiederverwendbaren Definieren einer Grenze zwischen einer Schnittstelle und der Implementierung in C. Dieses Prinzip wird auch demonstriert, indem es auf die Implementierung allgemeiner Mechanismen und Datenstrukturen in C angewendet wird, z. B. Listen, Mengen, Ausnahmen, Zeichenfolgenmanipulation, Speicherzuordnungen und mehr. Im Grunde genommen nahm Hanson den gesamten Code, den er beim Erstellen von Icon und lcc geschrieben hatte, und holte die besten Teile in einer Form heraus, die andere Leute für ihre eigenen Projekte wiederverwenden konnten. Es ist ein Modell für eine gute C-Programmierung unter Verwendung moderner Entwurfstechniken (einschließlich der Datenabstraktion von Liskov), das zeigt, wie ein großes C-Projekt als eine Reihe nützlicher Bibliotheken organisiert wird.
Das C-Puzzle-Buch - Alan R. Feuer (1998)
Die Standard C Bibliothek - PJ Plauger (1992). Es enthält den vollständigen Quellcode für eine Implementierung der C89-Standardbibliothek sowie eine ausführliche Diskussion über das Design und warum der Code wie gezeigt entworfen wurde.
C: C-Tipps des 21. Jahrhunderts von der neuen Schule - Ben Klemens (2012). Zusätzlich zur C-Sprache erklärt das Buch gdb, valgrind, autotools und git. Die Kommentare zum Stil finden Sie im letzten Teil (Kapitel 6 und darüber hinaus).
Algorithmen in C - Robert Sedgewick (1997). Gibt Ihnen einen guten Einblick in die Implementierung von Algorithmen in C. Sehr klar und klar; wird Sie wahrscheinlich dazu bringen, all Ihre anderen Algorithmenbücher wegzuwerfen und dieses zu behalten.
Hinweise auf C - Kenneth Reek (1997).
Zeiger in C - Naveen Toppo und Hrishikesh Dewan (2013).
Problemlösung und Programmgestaltung in C (6. Auflage) - Jeri R. Hanly und Elliot B. Koffman (2009).
Datenstrukturen - Ein fortschrittlicher Ansatz unter Verwendung von C - Jeffrey Esakov und Tom Weiss (1989).
C entfesselt - Richard Heathfield, Lawrence Kirby et al. (2000). Nicht ideal, aber es lohnt sich für fortgeschrittene Programmierer, die in diesem Buch beschriebenen Probleme zu üben. Dies ist ein guter kochbuchähnlicher Ansatz, der von Comp.lang.c-Mitarbeitern vorgeschlagen wird.
Experte
Nicht kategorisiert
Essential C (kostenloses PDF) - Nick Parlante (2003). Beachten Sie, dass dies die C90-Sprache an mehreren Stellen beschreibt ( z. B. bei der Erörterung von //Kommentaren und der Platzierung von Variablendeklarationen an beliebigen Stellen im Code). Daher sollte sie mit einiger Vorsicht behandelt werden.
C Häufig gestellte Fragen zur Programmierung: Häufig gestellte Fragen - Steve Summit (1995). Dies ist das Buch der zuvor aufgeführten Website. C99 oder die späteren Standards werden nicht behandelt.
C auf den Punkt gebracht - Peter Prinz und Tony Crawford (2005). Ausgezeichnetes Buch, wenn Sie eine Referenz für C99 benötigen.
Funktionale C - Pieter Hartel und Henk Müller (1997). Lehrt moderne Praktiken, die für die Programmierung auf niedriger Ebene von unschätzbarem Wert sind, unter Berücksichtigung von Parallelität und Modularität.
Die Programmierpraxis - Brian W. Kernighan und Rob Pike (1999). Ein sehr gutes Buch zur Begleitung von K & R. Es verwendet auch C ++ und Java.
C Fallen und Fallstricke von A. Koenig (1989). Sehr gut, aber der C-Stil datiert vor Standard C, was ihn heutzutage weniger empfehlenswert macht.
Einige haben sich dafür ausgesprochen, "Fallen und Fallstricke" aus dieser Liste zu streichen, weil dadurch einige Leute in Fehler geraten sind. andere argumentieren weiterhin für seine Aufnahme. Vielleicht sollte es als "Expertenbuch" angesehen werden, da es ein mäßig umfangreiches Wissen über C erfordert, um zu verstehen, was sich seit seiner Veröffentlichung geändert hat.
Bauen Sie Ihr eigenes Lisp - Daniel Holden (2014). Eine unterhaltsame Art, C. zu lernen.
MISRA-C - Industriestandard, veröffentlicht und gepflegt von der Motor Industry Software Reliability Association. Deckt C89 und C99 ab.
Obwohl dies kein Buch als solches ist, empfehlen viele Programmierer, so viel wie möglich davon zu lesen und zu implementieren. MISRA-C war ursprünglich als Richtlinie für sicherheitskritische Anwendungen gedacht, gilt jedoch für alle Anwendungsbereiche, in denen stabiler, fehlerfreier C-Code gewünscht wird (wer möchte nicht weniger Fehler?). MISRA-C wird zum De-facto-Standard in der gesamten Embedded-Branche und wird auch in anderen Programmierbranchen immer beliebter. Es gibt (mindestens) drei Veröffentlichungen des Standards (1998, 2004 und die aktuelle Version von 2012). Es gibt auch ein Dokument mit den MISRA-Konformitätsrichtlinien aus dem Jahr 2016 und MISRA C: 2012, Änderung 1 - Zusätzliche Sicherheitsrichtlinien für MISRA C: 2012 (veröffentlicht im April 2016).
Beachten Sie, dass einige der Einschränkungen in den MISRA-Regeln nicht für jeden Kontext geeignet sind. In der Richtlinie 4.12 heißt es beispielsweise "Dynamische Speicherzuweisung darf nicht verwendet werden". Dies ist in den eingebetteten Systemen angemessen, für die die MISRA-Regeln entwickelt wurden. es ist nicht überall angebracht. (Compiler verwenden beispielsweise im Allgemeinen die dynamische Speicherzuweisung für Dinge wie Symboltabellen, und es wäre schwierig, wenn nicht absurd, auf eine dynamische Speicherzuweisung zu verzichten.)
Archivierte Listen von ACCU-geprüften Büchern zu Beginner's C (116 Titel) aus dem Jahr 2007 und Advanced C (76 Titel) aus dem Jahr 2008. Die meisten davon scheinen nicht mehr auf der Hauptseite zu sein, und Sie können sie nicht nach Themen durchsuchen wie auch immer.
Warnungen
Seien Sie vorsichtig mit Büchern von Herbert Schildt . Insbesondere sollten Sie sich von C: The Complete Reference (4. Auflage, 2000) fernhalten , das in einigen Kreisen als C: The Complete Nonsense bekannt ist.
Verwenden Sie auch nicht das Buch Let Us C (16 th Edition 2017) von Yashwant Kanetkar. Viele Leute sehen es als ein veraltetes Buch an, das Turbo C lehrt und viel veraltetes, irreführendes und falsches Material enthält. Auf Seite 137 wird beispielsweise die erwartete Ausgabe von erläutert printf("%d %d %d\n", a, ++a, a++)und nicht als undefiniertes Verhalten eingestuft, wie es sollte.
Lerne C The Hard Way (2015) von Zed Shaw. Ein Buch mit gemischten Rezensionen.
Eine Kritik dieses Buches von Tim Hentenaar:
Um meine Ansichten zusammenzufassen, die im Folgenden dargelegt werden, präsentiert der Autor das Material auf stark vereinfachte und irreführende Weise, der gesamte Korpus ist ein gebündeltes Durcheinander, und einige der von ihm angebotenen Meinungen und Analysen sind einfach falsch. Ich habe versucht, dieses Buch mit den Augen eines Anfängers zu betrachten, aber leider bin ich voreingenommen durch jahrelange Erfahrung beim Schreiben von Code in C. Es ist mir klar, dass entweder der Autor ein fehlerhaftes Verständnis von C hat oder er es absichtlich zu stark vereinfacht Punkt, an dem er den Leser tatsächlich irreführt (absichtlich oder auf andere Weise).
"Learn C The Hard Way" ist kein Buch, das ich jemandem empfehlen könnte, der sowohl das Programmieren als auch das Lernen von C lernt. Wenn Sie bereits ein kompetenter Programmierer in einer anderen verwandten Sprache sind, dann ist es eine interessante und ungewöhnliche Darstellung von C, obwohl ich Vorbehalte gegen Teile des Buches habe. Jonathan Leffler
Veraltet
Andere Mitwirkende , die nicht unbedingt in der Revisionsgeschichte aufgeführt sind, sind:
Alex Lockwood ,
Ben Jackson ,
Blasen ,
Krallen ,
Coledot ,
Dana Robinson ,
Daniel Holden ,
Dervin Thunk ,
Dwci ,
Erci Hou ,
Garen ,
Haziz ,
Johan Bezem ,
Jonathan Leffler ,
Joshua Partogi ,
Lucas ,
Lundin ,
Matt K. ,
Mossplix ,
Matthieu M. ,
Midor ,
Nietzche-jou ,
Norman Ramsey ,
r3st0r3 , sich
selbst ,
Robert S. Barnes ,
Steve Summit ,
Tim Ring ,
Tony Bai ,
VMAtm