Ammeraal writes like the ideal teacher, presenting his material systematically and providing hints on good programming style throughout the text. All the concepts discussed are explained with examples that clarify the specific language elements being addressed. This book can serve as a good text for teaching beginners to program in ANSI C. It is also an excellent tutorial for people who have prior knowledge of another programming language. This edition is an improvement on the first in the sense that the programs are presented in ANSI C and are therefore highly portable.
The first chapter uses a simple sum and difference of squares program to explain ANSI C program functions and their syntax. The chapter concludes with an explanation of memory organization. Chapter 2 elaborates on chapter 1. Chapter 3 goes into the details of simple expressions and statements like the arithmetic operators and their combinations with assignment statements, comparison and logical operators, and conditional and iteration statements. Chapter 4 continues the discussions in chapter 3 at a deeper level. Topics discussed here include conditional expressions, the comma operator, bit manipulation, and simple arrays. Also discussed in this chapter are associativity and precedence of operators, type promotion and conversion, and the cast operator.
Chapter 5 covers functions and parameter passing. The chapter explains the void keyword in terms of functions that do not return values and functions that have no parameters. It also discusses functions that alter variables via parameters as well as preprocessor facilities. Chapter 6 presents a complete and technical discussion on arrays, pointers, and strings, including dynamic memory allocation. Chapter 7 discusses structures (the usual records), and chapter 8 presents a detailed explication of input and output for both text and binary files. Chapter 9 discusses binary search, quicksort, binary trees, and systems of linear equations. Finally, in chapter 10, the author digresses from his usual tutorial style and provides something that looks more like a technical reference for C programmers--the Standard Library--but he still supplies his usual explanations. The first of the two appendices provides 47 more exercises, with solutions to the last six of them, and the second appendix lists the ASCII table. The bibliography has six citations (two of them are self-citations), and the index is brief and complete.
The size of the book and the exercises provided at the end of each chapter make it a good text for teaching the language or for teaching some practical subject that uses the language.