Paperback: 353 pages
Publisher: Prentice Hall; 1st edition (June 24, 1994)
Product Dimensions: 7.4 x 0.9 x 9 inches
Shipping Weight: 1.5 pounds (View shipping rates and policies)
Average Customer Review: 4.3 out of 5 stars See all reviews (133 customer reviews)
Best Sellers Rank: #60,868 in Books (See Top 100 in Books) #2 in Books > Computers & Technology > Programming > Languages & Tools > Compilers #22 in Books > Computers & Technology > Programming > Languages & Tools > C & C++ > C #25 in Books > Computers & Technology > Programming > Microsoft Programming > C & C++ Windows Programming
Peter van der Linden's "Expert C Programming: Deep C Secrets", published in 1994, is already a classic. It explicitly assumes the reader knows how to program in C (according to the author, this "should be every programmer's second book on C"). In that sense, it is similar to Scott Meyers' "Effective C++" (originally published in 1991). Of course, C is a much smaller language than C++ but, even so, it does have some non-trivial aspects, which are precisely what van der Linden zeroes in on. Given the nature of this text, any review of its good and bad points needs to get down to the nitty-gritty.The Good: Dennis Ritchie, in his essay on "The Development of the C language", wrote that "Two ideas are most characteristic of C among languages of its class: the relationship between arrays and pointers, and the way in which declaration syntax mimics expression syntax." In the book under review, van der Linden is at his finest when discussing precisely these two topics. Starting with arrays & pointers: the book includes 3 chapters on the subject, first tackling the classic "defined as array / external declaration as pointer" problem. Later, the author returns to the root of the confusion, namely that even though arrays and pointers are distinct entities in declarations/definitions, there is one major exception: a function can have an array parameter, but the argument will be converted to a pointer before the call (though this rule isn't recursive). As a result, even though arrays are not modifiable lvalues, you can use assignment inside a function since the argument will have been converted to a pointer.