Table of Contents
- characteristics of C
- why you should learn C
- programming cliches
- the organization of this book
- compiling, linking, and executing
- statements and declarations
printf
and print specifications
- case sensitivity and blank insensitivity
- operators and operands
- data types and variable declarations
- initialization and assignment
- integral data types
- comments
- precedence and association
- binary and unary operators
- type casting
scanf
and read specifications
- input redirection
- calling and returning from functions
- arguments, parameters, and values
- making programs easier to reuse, read, and debug
- making programs easier to augment, improve, and change
- extent and scope
- local and global variables
- macro symbols
- equal,
==
, and not equal, !=
- greater than,
>
, and less than, <
- not,
!
- Boolean expressions
if
and if else
- empty and compound statements
- the conditional operator,
?:
- and,
&&
, and or, ||
- evaluation order
while
and for
statements
- augmented assignment operators
- increment,
++
, and decrement, --
, operators
- side effects
while
reading and for
reading loops
- action of the read function at the end of a file
- functions that call themselves
- the base part and the recursion part
- the definition-before-call requirement
- declare now, define later
- user-defined data types, structures, and objects
- structure declaration and structure variables
- the structure-member operator
- arrays of numeric elements
- filling a numeric array from a file
- multidimensional arrays
- arrays of structure-object elements
- filling an object array from a file
- why you should avoid structure copying
- pointers and pointer dereferencing
- the address-of operator,
&
- the structure-pointer operator,
->
- avoiding returned-value copying
- returning multiple values
- pointer arithmetic
- array names and constant pointers
- arrays and function parameters
- the free store
- allocating space with
malloc
- pointer casting
- wasting space by defining too-large object arrays
- saving space by defining too-large pointer arrays
switch
statements
exit
statements
- the mnemonic sterility of numbers
- the enumeration data type
- status registers and status bits
- setting and resetting
- bitwise and,
&
, and bitwise or, |
- masks and the shift operators,
>>
and <<
- character strings and character arrays
- the null character,
\0
- character arrays and input buffers
- using the read function with a character pointer
- creating character arrays at run time using
malloc
- using
strlen
and strcpy
to measure and copy
- the null pointer,
NULL
- characters viewed as integers
- obtaining character codes
- field width
- padding characters
- file pointers
- opening and closing files
- file reading and writing
- garbage and memory leaks
- suspending program operation using
sleep
free
viewed as the complement of malloc
- arguments of
main
- file specifications and flags
- testing for macro definitions
- compile-time versus run-time conditionalization
- moving declarations into header files
- compiling to create object files
- linking to create executable programs
- the
static
variable declaration
- the
extern
variable declaration
- recording file dependencies in a
makefile
- maintaining systems using the
make
utility