[TOC]
Know: What are the classic books of C language learning?
"The C Programming Language" (watercress)
Quora:which is the best books to learn C?
Quora:which Book was best for Learning C programming by a beginner?
Stackoverflow:the Definitive C book guide and List
Give a different level of books. Avoid bad books, especially those with the wrong books.
Attention:
If you are a novice in C, note that modern C language (modern C) refers to ANSI C, something that may be a bit outdated before 1989.
The author of the C Programming Language (2nd Edition) is Brian W. Kernighan and Dennis M. Ritchie, so this book is abbreviated as K&R (take the first letter of the two-author surname, Dennis Ri Tchie is the designer of the C language). This book is recommended by many people, but the focus of this book is not on language design and Practice (practice), the main reason is that the time to write this book is too early, when many people have not heard the C language, so there is no "best practice." This book does not say which of the C language is unnecessary (superfluous), nor which usages are dangerous (dangeros). So it can be used as a reference manual (reference manual), but it is inappropriate as a teaching book.
Reference-all stages (Reference-all level)
"The C Programming Language (2nd Edition)" by (Brian W. Kernighan and Dennis M. Ritchie, 1988).
"C:a Reference Manual (5th Edition)"-Samuel p. Harbison and Guy R. Steele (2002). Contains the C99.
C Pocket Reference (O ' Reilly)-Peter Prinz and Ulla Kirch-prinz (2002).
The COMP.LANG.C faq-c Language FAQs
Standards (the standard)
The new C Standard-an Annotated reference (free PDF)-Derek M. Jones (2009). Note that although this is "new", but still refers to C99, rather than C11, after all, 2009 read the book.
Rationale for C99.
Novice (Beginner)
- Programming in C (4th Edition)-Stephen Kochan (2014). A good general introduction and tutorial, page 552. Watercress: English, Chinese: C Language Programming (4th Edition)). Goodreads. There are C11 content, there are many mistakes in the commentary.
- C Primer Plus (5th Edition)-Stephen Prata (2004), 984 pages. Watercress: UK, Medium: C Primer Plus (fifth edition). goodreads:5th. This book has a 6th version, 2013, watercress, Goodreads.
- C programming:a Modern Approach (2nd Edition) -K. N. King, 832 pages. A Good book for learning C.
- A book on C-al Kelley/ira Pohl (1998).
- The C book (free Online)-Mike Banahan, Declan Brady, and Mark Doran (1991).
- C:how to Program (8th Edition)-Paul Deitel and Harvey M. Deitel, 1008 pages. Lots of good tips and best practices for beginners. The index is very good and serves as a decent reference (just not fully comprehensive, and very shallow).
- Head first C-david Griffiths and Dawn Griffiths (), 632 pages.
- Beginning C (5th Edition)-Ivor Horton (2013). Very good explanation of pointers, using lots of small but complete programs.
- Sams Teach yourself C in Days-bradley L. Jones and Peter Aitken (2002), 960 pages. Very Good introductory stuff.
- Applications programming in ANSI C-richard Johnsonbaugh and Martin Kalin (1996).
Intermediate (Intermediate)
- Object-oriented Programming with ansi-c (free PDF)-Axel-tobias Schreiner (1993). The code gets a bit convoluted. If you want C + +, use C + +.
- C Interfaces and Implementations-david R. Hanson (1997). Provides information on what to define a boundary between an interface and implementation in C in a generic and reusable FA Shion. It also demonstrates this principle by applying it to the implementation of common mechanisms and data structures in C, Su CH as lists, sets, exceptions, string manipulation, memory allocators, and more. Basically, Hanson took all the code he ' d written as part of building Icon and LCC and pulled out the best bits in a form t Hat other people could reuse for their own projects. It's a model of good C programming using modern design techniques (including Liskov ' s data abstraction), showing how to or Ganize a big C project as a bunch of useful libraries.
- The C Puzzle Book-alan R. Feuer (1998)
- The standard C LIBRARY-P.J. Plauger (1992). It contains the complete source code to a implementation of the C89 standard library, along with extensive discussion abo UT the design and why the code is designed as shown.
- 21st Century C:c Tips from the New school-ben Klemens (2012). In addition to the C language, the book explains GdB, Valgrind, Autotools, and Git. The comments on style is found in the last part (Chapter 6 and beyond).
- Algorithms in C-robert Sedgewick (1997). Gives you a real grasp of implementing algorithms in C. Very lucid and clear; Would probably make want to throw away all of the Your other algorithms books and keep this one.
- Pointers on C-kenneth Reek (1997).
- Pointers in C-naveen Toppo and Hrishikesh Dewan (2013).
- Problem solving and program Design in C (6th Edition)-Jeri R. Hanly and Elliot B. Koffman (2009).
- Data Structures-an Advanced Approach Using C-jeffrey Esakov and Tom Weiss (1989).
C Unleashed-richard Heathfield, Lawrence Kirby, et al. (2000). Not ideal, but it's worth intermediate programmers practicing problems written in this book. This was a good cookbook-like approach suggested by comp.lang.c contributors.
Modern C-jens Gustedt (2017). Covers C in 5 levels (encounter, acquaintance, cognition, experience, ambition) from beginning C to advanced C. It covers C11 threads and atomic access, which few other books does and not all compilers recognize in all environments.
Specialist (expert)
- Expert c programming:deep C Secrets-peter van der Linden (1994). Lots of interesting information and war stories from the Sun compiler team, but a little dated in places.
- Advanced C programming by Example-john W. Perry (1998).
- Advanced programming in the UNIX Environment-richard W. Stevens and Stephen A. Rago (2013). Comprehensive description of "the" the Unix APIs from C code, and not so much about the mechanics of C coding.
- Advanced C:food for the Educated Palate-narain Gehani (1985). Great on pointers, pointers to functions, and a variety of the advanced topics, such as how stuff are stored in memory, dynamic Memory, stack usage, function calling, parameter passing, etc. Assumes you has a good grasp of C to start with. Warning:pre-dates the ANSI standard and a lot of modern programming design.
- Computer Programming:an Introduction for the scientifically Inclined-sander stoks (2008). Great book on scientific use of programming languages.
- Reversing:secrets of Reverse Engineering-eldad Eilam (2005). For those who want to test the limits of their ethics.
Uncategorized (Uncategorized)
- Essential C (free PDF)-Nick parlante (2003). Note that this describes the C90 language at several points ( e.g. , discussing
//
comments and PLA Cement of variable declarations at arbitrary points in the code), so it should is treated with some caution.
- C Programming faqs:frequently asked Questions-steve Summit (1995).
- C in a nutshell-peter Prinz and Tony Crawford (2005). Excellent book If your need a reference for C99.
- functional C-pieter Hartel and Henk Muller (1997). Teaches modern practices that is invaluable for low-level programming, with concurrency and modularity in mind.
-
The practice of Programming-brian W. Kernighan and Rob Pike (1999). A very good book to accompany K&r.
-
C Traps and pitfalls by A. Koenig (1989). Very good, but the C style pre-dates standard C, which makes it less recommendable these days.
Some had argued for the removal of ' Traps and pitfalls ' from this list because it had trapped Some people into making mistakes; Others continue to argue for its inclusion. Perhaps it should is regarded as an ' expert ' book because it requires a moderately extensive knowledge of C to understand What ' s changed since it is published.
-
Computer systems:a Programmer ' s Perspective (3rd Edition)-Randal E. Bryant and David R. O ' Hallaron (2015). Explains the C language in a disjointed narrative style, like Pulp fiction .
-
Abstraction and Specification in program Development-barbara Liskov and John v. Guttag (1986) ( not the N Ewer java-based version by Liskov alone). This is a undergraduate text, with some ideas worth thinking.
-
Composite/structured Design-glenford J. Myers (1978). This and other books from the late 1970s and early 1980s by Yourdon and Myers provide excellent insights on structured des IGN.
-
Build Your Own Lisp-daniel Holden (2014). An enjoyable-to-learn C.
-
Misra-c-Industry standard published and maintained by the Motor Industry Software Reliability Association. Covers C89 and C99.
Although this isn ' t a book as such, every experienced C programmer should read and implement as much of it as possible. Misra-c is originally intended as guidelines for safety-critical applications in particular, but it applies to any area O F application where stable, Bug-free C code is desired (who doesn ' t want fewer bugs?). Misra-c is becoming the de facto standard in the whole embedded industry and are getting increasingly popular even in other Programming branches. There is (at least) three publications of the same, one from 1998, one from 2004, and one from, where the last I s the currently active, relevant one. There is also a MISRA Compliance guidelines document from, and MISRA c:2012 amendment 1-additional Security Guideli NES for MISRA c:2012 (published in April 2016).
Note that some of the strictures in the MISRA rules is appropriate to every context. For example, Directive 4.12 states "Dynamic memory allocation shall" is used ". This is appropriate in the embedded systems for which the MISRA rules is designed; It is not appropriate everywhere. (Compilers, for instance, generally with dynamic memory allocation for things like symbol tables, and to do without dynamic Memory allocation would is difficult, if not preposterous.)
- Archived lists of accu-reviewed books on beginner ' s C (in the "All-in-a-titles" from-and-advanced C (off titles) from 2008. Most of the These don ' t-look-to is on the main site anymore, and you can ' t browse this by subject anyway.
Warnings
Be wary of books written by Herbert Schildt. In particular, you should stay away from c:the complete Reference, known in some circles as c:the complete nonsense.
Also is wary of the book ' LetUs C' by Yashwant Kanetkar. It's a horribly outdated book that teaches Turbo C and have lot of obsolete, misleading and downright incorrect material.
Learn C the hard way-zed Shaw. A Critique of this book by Tim Hentenaar:
To summarize my views, which is laid out below, the author presents the material in a greatly oversimplified and Misleadi Ng, the whole corpus is a bundled mess, and some of the opinions and analyses he offers are just plain wrong. I ' ve tried to view the through the eyes of a novice and unfortunately I am biased by years of experience writing Co De in C. It's obvious to me that either the author have a flawed understanding of C, or he ' s deliberately oversimplifying to the POI NT where he ' s actually misleading the reader (intentionally or otherwise.)
"Learn c the hard-to-do" is not a book that I could recommend-someone who's both learning to program and learning C. If you ' re already a competent programmer in some other related language, then it represents an interesting and unusual exp Osition on C, though I has reservations about parts of the book. Jonathan Leffler
Outdated
- Practical C Programming (3rd Edition)-Steve Oualline (1997) (beginner)
Learn C language