Here's the punchline: despite the title, this is a book about C++ as much as it is about C; moreover, there's little to no original content in this book. It largely consists of chunks of text from other books by the same authors pasted together with some minor editing, but the editing was not extensive enough and the seams show: a few sections (straight from the middle of the book) talk about the garbage collector in Java as if it were a part of C!
I just finished a course on C, and the instructor opted to use this book. My first impression of the book was that it's way too expensive and it's way too big for a friendly introduction to C. From the size alone and the ten different subheadings, I had a feeling this was going to be a prime example of what I call Textbook Syndrome, and indeed it is now my main example of this phenomenon.
Textbook Syndrome is an unfortunate disease afflicting most authors who write books used for introductory freshman and sophomore college courses. In short, Textbook Syndrome causes an author to write for the people teaching from the book, not the people learning from it. It is believed that Textbook Syndrome is contagious and is spread via the propagation of poorly understood flimsy green entities; the development of a cure and preventative measure is an open question in science today.
For diagnostic purposes, here are a few common symptoms of Textbook Syndrome, all exhibited keenly by the present book:
(i) The book includes about ten times as much material as could reasonably be covered in a one-semester course. This is done so that (a) the book is bigger and therefore both looks more substantive and costs more; (b) it can be used for any course on any topic remotely related to the book's title; (c) it can be used for both introductory courses and advanced courses. The math is simple: (a) + (b) + (c) = a blatant attempt to maximize profit, nothing else.
For the student, it means he must carry around an ancient thousand-page tome, the majority of which will never be useful to him. For the teacher, it means he must (perhaps ironically) put more effort into actually providing the course with a coherent structure, as the book itself, so overburdened with unnecessary material, could never hope to achieve any sort of coherence.
This is a book on C, as the title suggests. It's also a book on game programming. It's also a book on C++ (count them: ten chapters). I wonder if they will add another ten chapters on Java in the next edition.
(ii) Exercises range from fill-in-the-blank questions about what preprocessor directive to use to include one file in another (I am not kidding) to a team-based, multi-month extravaganza to develop a compiler from scratch. Books written by authors having Textbook Syndrome often exhibit what I will call the intermediate value property: given two extremes possessed by the book, the book will also possess everything in between.
The present book indeed has the intermediate value property. Every imaginable exercise in between the two above extremes is present at the end of each chapter. Presumably this is so the book is useable at the same time by everybody on the planet Earth from Ph.D. physicists and mathematicians at NASA to novice junior high students who aren't up to speed on the concept of "computer." (For the latter group, worry not: the first chapter will help clarify the purpose of these auspicious contraptions.)
(iii) Very important pieces of information are inexplicably missing. The standard function gets() is mentioned, but it is not mentioned that this function should almost never be used. Even the man page for gets explicitly states it should not be used, but this thousand-page tome can't even provide this nugget of actually useful information.
(iv) The book includes vocabulary lists (just words, no definitions) at the end of every chapter since, you know, memorizing vocab words is useful while one learns to program. (Technically, this is a special case of the intermediate value property discussed in point (ii), but the vocab lists are so stupid I wanted to give them the emphasis that comes with having their own point.)
I could go on, but I will conclude this review with a description of who I think must be the quintessential intended user of this book. You should buy this book if you have money to blow, you believe that copying and pasting bits of text from a dozen other books is the height of authorship, you want to support the financial decline of many poor and starving computer science students who are forced to purchase books like this, you believe vocab lists are relevant to computer science (and therefore you have absolutely no computer science education whatsoever), you don't know the meaning of the word "focus", and you have long lost any respect for titles (who are these titles to dictate the contents of books anyway?).