The first edition of C Programming: A Modern Approach was popular with students and faculty alike because of its clarity and comprehensiveness as well as its trademark Q&A sections. Professor King’s spiral approach made it accessible to a broad range of readers, from beginners to more advanced students. With adoptions at over 225 colleges, the first edition was one of the leading C textbooks of the last ten years.
The second edition maintains all the book’s popular features and brings it up to date with coverage of the C99 standard. The new edition also adds a significant number of exercises and longer programming projects, and includes extensive revisions and updates.
Highlights of the second edition include:
â€¢ Complete coverage of both the C89 standard and the C99 standard, with all C99 changes clearly marked
â€¢ A quick reference to all C89 and C99 library functions
â€¢ Expanded coverage of GCC
â€¢ New coverage of abstract data types
â€¢ Updates to reflect today’s CPUs and operating systems
â€¢ Nearly 500 exercises and programming projects-sixty percent more than in the first edition
â€¢ Source code and solutions to selected exercises and programming projects
â€¢ A password-protected instructor site containing solutions to the remaining exercises and projects, plus PowerPoint presentations for most chapters
Review by Raymond Woo (Fort Worth, Texas)
I have browsed some C and C++ books in major bookstores to see how the materials are organized and presented. This one was not a book I had a chance to browse, but one which I had to buy for an extension course (Introductory C Programming) at UCLA last summer.
At first I thought King’s book was hard because of a certain depth of penetration into elements of good programming practices with examples one after another. As I became serious and started to reading intently, I found out how effective King was in paving the way toward a comprehensive understanding of C programming through worked out code and annotations. King is very skilled in breaking down and building up C code, unlike certain celebrated C programming language experts who apparently do not care to be clear or are simply ineffective. So my conclusion is: Read this each chapter of this book very closely, carefully and seriously, and try to understand every last point King is raising. Also, do not neglect working out some of his exercises at the end of each chapter for the benefit of practice as well as learning C. In almost every chapter of the book, he gives very good, organized and annotated but not tedious and complex examples. The problems are generally reasonable and hardly ever too complicated because I never found them overwhelming, either from a coding perspective or mathematically. Perhaps it is because King comes across as someone who emphasizes organization, detail, clarity and explanation in his style of presentation. There are no problems dealing with heavy scientific or engineering applications for those who dread them.
Great points: (1) Fundamentals – beginning chapters goes into detail for a solid grounding of C language basics (syntax, etc.); and (2) Pointers – excellent exposition with examples, diagrams and exercises, extremely well presented for the starters who easily get confused by what pointers in C are all about; and (3) Ideas are very well connected from chapter to chapter — some chapters are even as great as stand-alone ones for referencing. The only problems I found were: (1) Description of struct types, which are passed by value from function to function — implied but not clearly or succintly stated in the book (compare the description in the excellent book by Kelley and Pohl, “A Book in C”); (2) Chapter on program design, which I found to be very terse and scanty in terms of information topics about designing medium size to large C programs — also jumps into encapsulation and C++ too soon and leaves out one too many basic ideas in C program organization — “Look before you leap”, C++ is object-oriented, and is therefore much more complex and evolved, so why do too much of C++ when one must learn basics of ANSI C well beforehand!
For some reason, I feel strongly that King is following the writing style and presentation of the classical work in C programming by Kernighan and Ritchie. He even discusses the significant contributions of Kernighan in establishing the C language as the mainstay of modern programming for all kinds of applications. There are some uncanny resemblance in style and other parallels I sense in his book. King also retains a lot of the clarity in thinking and intrinsic simplicity reflected in Kernighan and Ritchie’s writing style.
Because of the lengthy chapters and reading required, this is not the best ANSI C reference book in my view. Kelley and Pohl’s excellent paperback, entitled “A Book in C”, does far better in that respect. However, King has more good illustrated examples in his book for the newcomer. You will like his book if you like Kernighan and Ritchie’s paperback classic. In fact, King has more for you. The only caveat may be that any newcomer would be well advised to try to understand a little about C before attempting to read the book, because only afterwards does King’s treatment only makes sense and becomes meaningful and stimulating. Also, it may help out considerably if one finds a good instructor to teach ANSI C in formal classroom environment using King’s book here (as I did last summer at UCLA Extension).
All in all: A very good no-nonsense book for the motivated beginner in C programming.