Writing an ANSI C Program Getting Ready to Program A First Program Variables, Expressions, and Assignments Initialization The Use of #define and #include The Use of printf() and scanf() The Use of printf() The Use of scanf() The while Statement Problem Solving: Computing Sums Writing and Running a C Program Interrupting a Program Typing an End-of-File Signal Redirection of the Input and the Output Lexical Elements, Operators, and the C System Characters and Lexical Elements Comments Keywords Identifiers Constants String Constants Operators and Punctuators Precedence and Associativity of Operators Increment and Decrement Operators Assignment Operators An Example: Computing Powers of 2 The C System The Preprocessor The Standard Library
Flow of Control Relational, Equality, and Logical Operators Relational Operators and Expressions Equality Operators and Expressions Logical Operators and Expressions Short-Circuit Evaluation The Compound Statement The Empty Statement The if and if-else Statements The while Statement Problem Solving: Finding Maximum Values The for Statement Problem Solving: Combinatorics Problem Solving: Boolean Variables The Comma Operator The do Statement The goto Statement The break and continue Statements The switch Statement Nested Flow of Control The Conditional Operator Functions and Structured Programming Function Invocation Function Definition The return Statement Function Prototypes Top-Down Design Program Correctness: The assert() Macro Function Declarations from the Compiler's Viewpoint Limitations Problem Solving: Random Numbers An Alternate for Function Definition Order Developing a Large Program What Constitutes a Large Program?
A Simulation: The Game of Heads or Tails Invocation and Call-by-Value Recursion Function Prototypes in C++ Character Processing The Data Type char The Use of getchar() and putchar() An Example: Capitalize The Macros in ctype.h Problem Solving: Repeating Characters Problem Solving: Counting Words The Fundamental Data Types Declarations and Expressions The Fundamental Data Types Characters and the Data Type char The Data Type int The Integral Types short, long, and unsigned The Floating Types The sizeof Operator Mathematical Functions Conversions and Casts The Integral Promotions The Usual Arithmetic Conversions Casts Problem Solving: Computing Interest
Enumeration Types and typedef Enumeration Types The Use of typedef An Example: The Game of Paper, Rock, Scissors Functions, Pointers, and Storage Classes Pointer Declaration and Assignment Addressing and Dereferencing Pointers to void Call-by-Reference Scope Rules Storage Classes The Storage Class auto The Storage Class extern The Storage Class register The Storage Class static Static External Variables Default Initialization An Example: Processing Characters Function Declarations and Definitions The Type Qualifiers const and volatile Arrays and Pointers One-Dimensional Arrays Initialization Subscripting An Example: Counting Each Letter Separately The Relationship Between Arrays and Pointers Pointer Arithmetic and Element Size
Passing Arrays to Functions A Sorting Algorithm: Bubble Sort Two-Dimensional Arrays Multidimensional Arrays Dynamic Memory Allocation Strings and Pointers The End-of-String Sentinel \0 Initialization of Strings An Example: Have a Nice Day Using Pointers to Process a String Problem Solving: Counting Words Passing Arguments to main() String Handling Functions in the Standard Library Recursion Recursive Problem Solving An Example: Drawing Patterns on the Screen String Handling Using Recursion The Divide-and-Conquer Methodology Structures and ADTs Declaring Structures Accessing a Member Operator Precedence and Associativity: A Final Look Structures, Functions, and Assignment
Problem Solving: Student Records Initialization of Structures The Use of typedef Self-Referential Structures Linear Linked Lists Dynamic Storage Allocation List Operations Counting and Lookup Insertion and Deletion Classes Input/Output and Files The Output Function printf() The Input Function scanf() Directives in the Control String Ordinary Characters White Space Characters Conversion Specifications Floating Numbers in the Input Stream Using the Scan Set The Return Value A scanf() Example The functions sprintf() and sscanf() The functions fprintf() and fscanf() Accessing Files An Example: Double-Spacing a File Using Temporary Files and Graceful Functions Accessing a File Randomly The Function sscanf() Is Different Software Tools
Executing Commands From Within a C Program Environment Variables The C Compiler Creating a Library Using the Profiler How to Time C Code The Use of dbx The Use of make The Use of touch Other Useful Tools From C to C++ Object-Oriented Programming Why Switch to C++? Classes and Abstract Data Types Overloading Constructors and Destructors Inheritance Polymorphism Templates C++ Exceptions Benefits Of Object-Oriented Programming From C To C++ Output Input Classes and Abstract Data Types Overloading Constructors and Destructors Object-oriented Programming and Inheritance
The Standard Library Diagnostics: assert.h Character Handling: ype.h Testing a Character Mapping a Character Errors: errno.h Floating Limits: float.h Integral Limits: limits.h Localization: local.h Mathematics: math.h Nonlocal Jumps: setjmp.h Signal Handling: signal.h Variable Arguments: stdard.h Common Definition: stddef.h Input/Output: stdio.h Opening, Closing, and Conditioning a File Accessing the File Position Indicator Error Handling Character Input/Output Formatted Input/Output Direct Input/Output Removing or Renaming a File General Utilities: stdlib.h Dynamic Allocation of Memory Searching and Sorting Pseudo Random Number Generator Communicating With the Environment Integer Arithmetic String Conversion Multibyte Character Functions Multibyte String Functions Leaving the Program Memory and String Handling: string.h Memory Handling Functions String Handling Functions Date and Time: time.h Accessing the Clock Accessing the Time Miscellaneous
Using File Descriptors Creating a Concurrent Process Overlaying a Process Interprocess Communication Suspending Program Execution The Preprocessor The Use of #include The Use of #define Syntactic Sugar Macros With Arguments The Use of #undef Conditional Compilation Predefined Macros The Operators # and ## The assert() Macro The Use of #error and #pragma Line Numbers Corresponding Functions Bitwise Operators Bitwise Operators and Expressions Bitwise Complement Two's Complement Bitwise Binary Logical Operators Left- and Right-Shift Operators Masks Printing an int Bitwise Packing and Unpacking ANSI C Compared To Traditional C Types Constants Declarations Initializations Expressions Functions Conversions Array Pointers Structures and Unions
Preprocessor Header Files Miscellaneous ASCII Character Codes Operator Precedence and Associativity Table of Contents provided by Blackwell's Book Services and R.R. Bowker. Used with permission.