The classic reference for C is the book by Kernighan and Richie. It's a great reference manual. It's a good introduction to the language if you are an experienced programmer: timid beginners should locate a more friendly introduction (of which there are many). Although the old Bell Labs imprint first editions make wonderful collector's pieces---particularly for those who can also claim to have learned to program on cards---the book you actually use for practical purposes should be the second edition, which has been upgraded to the ANSI standard.
C++ is an extension of C, which supports data abstraction and object-oriented programming. It is a compromise between C and a high-level programming language. It gives you abstact data types, missing in C, but not in the clean general form provided by a typical high-level language. It retains much of the efficiency of C. Unfortunately, it also retains some of C's less fortunate features (e.g. no garbage collector, identification of characters and small integers). Where C's syntax is stark and quirky, C++ syntax is baroque. It seems to take longer to learn C++ than either C or a high-level language (e.g. Common Lisp). For appropriate applications, it is very popular.
The favorite C++ reference for inexperienced programmers is Deitel and Deitel. It is very readable but does not support random access very well.
If you like Kernighan and Richie's C book, you will probably like Dewhurst and Stark, or Oualline. These are both concise, practical reference manuals. Lippman provides a broader overview, with language design motivation, very readable but intended for an experienced programmer. It also supports random access less well than, say, Oualline. (But I only just got the third edition and the changes look substantial.)
Programmers with some experience in C++ may also want to consult Stroustrup's books for more details and discussion. The language reference contains details not found elsewhere. For those of you who had the dubious pleasure of trying to work with the second edition, the third edition looks massively more readable. The "Design and Evolution" book is very readable and explains the rationale behind many features (and misfeatures).
The books by Meyers and Coplien are useful supplements to the above books, containing a large range of hints for avoiding common problems.
Last modified