| | Copyright |
| | Preface |
|
| | How This Book Is Organized |
|
| | Further Reading |
|
| | Conventions Used in This Book |
|
| | Using Code Examples |
|
| | Safari® Enabled |
|
| | Your Questions and Comments |
|
| | Acknowledgments |
| |
Part I:
Language |
|
| |
Chapter 1.
Language Basics |
|
| |
Section 1.1.
Characteristics of C |
|
| |
Section 1.2.
The Structure of C Programs |
|
| |
Section 1.3.
Source Files |
|
| |
Section 1.4.
Comments |
|
| |
Section 1.5.
Character Sets |
|
| |
Section 1.6.
Identifiers |
|
| |
Section 1.7.
How the C Compiler Works |
|
| |
Chapter 2.
Types |
|
| |
Section 2.1.
Typology |
|
| |
Section 2.2.
Integer Types |
|
| |
Section 2.3.
Floating-Point Types |
|
| |
Section 2.4.
Complex Floating-Point Types (C99) |
|
| |
Section 2.5.
Enumerated Types |
|
| |
Section 2.6.
The Type void |
|
| |
Chapter 3.
Literals |
|
| |
Section 3.1.
Integer Constants |
|
| |
Section 3.2.
Floating-Point Constants |
|
| |
Section 3.3.
Character Constants |
|
| |
Section 3.4.
String Literals |
|
| |
Chapter 4.
Type Conversions |
|
| |
Section 4.1.
Conversion of Arithmetic Types |
|
| |
Section 4.2.
Conversion of Nonarithmetic Types |
|
| |
Chapter 5.
Expressions and Operators |
|
| |
Section 5.1.
How Expressions Are Evaluated |
|
| |
Section 5.2.
Operators in Detail |
|
| |
Section 5.3.
Constant Expressions |
|
| |
Chapter 6.
Statements |
|
| |
Section 6.1.
Expression Statements |
|
| |
Section 6.2.
Block Statements |
|
| |
Section 6.3.
Loops |
|
| |
Section 6.4.
Selection Statements |
|
| |
Section 6.5.
Unconditional Jumps |
|
| |
Chapter 7.
Functions |
|
| |
Section 7.1.
Function Definitions |
|
| |
Section 7.2.
Function Declarations |
|
| |
Section 7.3.
How Functions Are Executed |
|
| |
Section 7.4.
Pointers as Arguments and Return Values |
|
| |
Section 7.5.
Inline Functions |
|
| |
Section 7.6.
Recursive Functions |
|
| |
Section 7.7.
Variable Numbers of Arguments |
|
| |
Chapter 8.
Arrays |
|
| |
Section 8.1.
Defining Arrays |
|
| |
Section 8.2.
Accessing Array Elements |
|
| |
Section 8.3.
Initializing Arrays |
|
| |
Section 8.4.
Strings |
|
| |
Section 8.5.
Multidimensional Arrays |
|
| |
Section 8.6.
Arrays as Arguments of Functions |
|
| |
Chapter 9.
Pointers |
|
| |
Section 9.1.
Declaring Pointers |
|
| |
Section 9.2.
Operations with Pointers |
|
| |
Section 9.3.
Pointers and Type Qualifiers |
|
| |
Section 9.4.
Pointers to Arrays and Arrays of Pointers |
|
| |
Section 9.5.
Pointers to Functions |
|
| |
Chapter 10.
Structures and Unions and Bit-Fields |
|
| |
Section 10.1.
Structures |
|
| |
Section 10.2.
Unions |
|
| |
Section 10.3.
Bit-Fields |
|
| |
Chapter 11.
Declarations |
|
| |
Section 11.1.
General Syntax |
|
| |
Section 11.2.
Type Names |
|
| |
Section 11.3.
typedef Declarations |
|
| |
Section 11.4.
Linkage of Identifiers |
|
| |
Section 11.5.
Storage Duration of Objects |
|
| |
Section 11.6.
Initialization |
|
| |
Chapter 12.
Dynamic Memory Management |
|
| |
Section 12.1.
Allocating Memory Dynamically |
|
| |
Section 12.2.
Characteristics of Allocated Memory |
|
| |
Section 12.3.
Resizing and Releasing Memory |
|
| |
Section 12.4.
An All-Purpose Binary Tree |
|
| |
Section 12.5.
Characteristics |
|
| |
Section 12.6.
Implementation |
|
| |
Chapter 13.
Input and Output |
|
| |
Section 13.1.
Streams |
|
| |
Section 13.2.
Files |
|
| |
Section 13.3.
Opening and Closing Files |
|
| |
Section 13.4.
Reading and Writing |
|
| |
Section 13.5.
Random File Access |
|
| |
Chapter 14.
Preprocessing Directives |
|
| |
Section 14.1.
Inserting the Contents of Header Files |
|
| |
Section 14.2.
Defining and Using Macros |
|
| |
Section 14.3.
Conditional Compiling |
|
| |
Section 14.4.
Defining Line Numbers |
|
| |
Section 14.5.
Generating Error Messages |
|
| |
Section 14.6.
The #pragma Directive |
|
| |
Section 14.7.
The _Pragma Operator |
|
| |
Section 14.8.
Predefined Macros |
| |
Part II:
Standard Library |
|
| |
Chapter 15.
The Standard Headers |
|
| |
Section 15.1.
Using the Standard Headers |
|
| |
Section 15.2.
Contents of the Standard Headers |
|
| |
Chapter 16.
Functions at a Glance |
|
| |
Section 16.1.
Input and Output |
|
| |
Section 16.2.
Mathematical Functions |
|
| |
Section 16.3.
Character Classification and Conversion |
|
| |
Section 16.4.
String Processing |
|
| |
Section 16.5.
Multibyte Characters |
|
| |
Section 16.6.
Converting Between Numbers and Strings |
|
| |
Section 16.7.
Searching and Sorting |
|
| |
Section 16.8.
Memory Block Handling |
|
| |
Section 16.9.
Dynamic Memory Management |
|
| |
Section 16.10.
Date and Time |
|
| |
Section 16.11.
Process Control |
|
| |
Section 16.12.
Internationalization |
|
| |
Section 16.13.
Nonlocal Jumps |
|
| |
Section 16.14.
Debugging |
|
| |
Section 16.15.
Error Messages |
|
| |
Chapter 17.
Standard Library Functions |
|
| | _Exit |
|
| | abort |
|
| | abs |
|
| | acos |
|
| | acosh |
|
| | asctime |
|
| | asin |
|
| | asinh |
|
| | assert |
|
| | atan |
|
| | atan2 |
|
| | atanh |
|
| | atexit |
|
| | atof |
|
| | atoi |
|
| | atol, atoll |
|
| | bsearch |
|
| | btowc |
|
| | cabs |
|
| | cacos |
|
| | cacosh |
|
| | calloc |
|
| | carg |
|
| | casin |
|
| | casinh |
|
| | catan |
|
| | catanh |
|
| | cbrt |
|
| | ccos |
|
| | ccosh |
|
| | ceil |
|
| | cexp |
|
| | cimag |
|
| | clearerr |
|
| | clock |
|
| | conj |
|
| | copysign |
|
| | cos |
|
| | cosh |
|
| | cpow |
|
| | cproj |
|
| | creal |
|
| | csin |
|
| | csinh |
|
| | csqrt |
|
| | ctan |
|
| | ctanh |
|
| | ctime |
|
| | difftime |
|
| | div |
|
| | erf |
|
| | erfc |
|
| | exit |
|
| | exp |
|
| | exp2 |
|
| | expm1 |
|
| | fabs |
|
| | fclose |
|
| | fdim |
|
| | feclearexcept |
|
| | fegetenv |
|
| | fegetexceptflag |
|
| | fegetround |
|
| | feholdexcept |
|
| | feof |
|
| | feraiseexcept |
|
| | ferror |
|
| | fesetenv |
|
| | fesetexceptflag |
|
| | fesetround |
|
| | fetestexcept |
|
| | feupdateenv |
|
| | fflush |
|
| | fgetc |
|
| | fgetpos |
|
| | fgets |
|
| | fgetwc |
|
| | fgetws |
|
| | floor |
|
| | fma |
|
| | fmax |
|
| | fmin |
|
| | fmod |
|
| | fopen |
|
| | fpclassify |
|
| | fprintf |
|
| | fputc |
|
| | fputs |
|
| | fputwc |
|
| | fputws |
|
| | fread |
|
| | free |
|
| | freopen |
|
| | frexp |
|
| | fscanf |
|
| | fseek |
|
| | fsetpos |
|
| | ftell |
|
| | fwide |
|
| | fwprintf |
|
| | fwscanf |
|
| | fwrite |
|
| | getc |
|
| | getchar |
|
| | getenv |
|
| | gets |
|
| | getwc |
|
| | getwchar |
|
| | gmtime |
|
| | hypot |
|
| | ilogb |
|
| | imaxabs |
|
| | imaxdiv |
|
| | isalnum |
|
| | isalpha |
|
| | isblank |
|
| | iscntrl |
|
| | isdigit |
|
| | isfinite |
|
| | isgraph |
|
| | isgreater, isgreaterequal |
|
| | isinf |
|
| | isless, islessequal, islessgreater |
|
| | islower |
|
| | isnan |
|
| | isnormal |
|
| | isprint |
|
| | ispunct |
|
| | isspace |
|
| | isunordered |
|
| | isupper |
|
| | iswalnum |
|
| | iswalpha |
|
| | iswblank |
|
| | iswcntrl |
|
| | iswctype |
|
| | iswdigit |
|
| | iswgraph |
|
| | iswlower |
|
| | iswprint |
|
| | iswpunct |
|
| | iswspace |
|
| | iswupper |
|
| | iswxdigit |
|
| | isxdigit |
|
| | labs |
|
| | ldexp |
|
| | ldiv |
|
| | llabs |
|
| | lldiv |
|
| | llrint |
|
| | llround |
|
| | localeconv |
|
| | localtime |
|
| | log |
|
| | log10 |
|
| | log1p |
|
| | log2 |
|
| | logb |
|
| | longjmp |
|
| | lrint |
|
| | lround |
|
| | malloc |
|
| | mblen |
|
| | mbrlen |
|
| | mbrtowc |
|
| | mbsinit |
|
| | mbsrtowcs |
|
| | mbstowcs |
|
| | mbtowc |
|
| | memchr |
|
| | memcmp |
|
| | memcpy |
|
| | memmove |
|
| | memset |
|
| | mktime |
|
| | modf |
|
| | nearbyint |
|
| | nextafter |
|
| | nexttoward |
|
| | perror |
|
| | pow |
|
| | printf |
|
| | putc |
|
| | putchar |
|
| | puts |
|
| | putwc |
|
| | putwchar |
|
| | qsort |
|
| | raise |
|
| | rand |
|
| | realloc |
|
| | remainder |
|
| | remove |
|
| | remquo |
|
| | rename |
|
| | rewind |
|
| | rint |
|
| | round |
|
| | scalbln, scalbn |
|
| | scanf |
|
| | setbuf |
|
| | setjmp |
|
| | setlocale |
|
| | setvbuf |
|
| | signal |
|
| | signbit |
|
| | sin |
|
| | sinh |
|
| | snprintf |
|
| | sprintf |
|
| | sqrt |
|
| | srand |
|
| | sscanf |
|
| | strcat |
|
| | strchr |
|
| | strcmp |
|
| | strcoll |
|
| | strcpy |
|
| | strcspn |
|
| | strerror |
|
| | strftime |
|
| | strlen |
|
| | strncat |
|
| | strncmp |
|
| | strncpy |
|
| | strpbrk |
|
| | strrchr |
|
| | strspn |
|
| | strstr |
|
| | strtod, strtof, strtold |
|
| | strtoimax |
|
| | strtok |
|
| | strtol, strtoll |
|
| | strtoul, strtoull |
|
| | strtoumax |
|
| | strxfrm |
|
| | swprintf |
|
| | swscanf |
|
| | system |
|
| | tan |
|
| | tanh |
|
| | time |
|
| | tmpfile |
|
| | tmpnam |
|
| | tolower |
|
| | toupper |
|
| | towctrans |
|
| | towlower |
|
| | towupper |
|
| | trunc |
|
| | ungetc |
|
| | ungetwc |
|
| | va_arg, va_copy, va_end, va_start |
|
| | vfprintf, vprintf, vsnprintf, vsprintf |
|
| | vfscanf, vscanf, vsscanf |
|
| | vfwprintf, vswprintf, vwprintf |
|
| | vfwscanf, vswscanf, vwscanf |
|
| | wcrtomb |
|
| | wcscat |
|
| | wcschr |
|
| | wcscmp |
|
| | wcscoll |
|
| | wcscpy |
|
| | wcscspn |
|
| | wcsftime |
|
| | wcslen |
|
| | wcsncat |
|
| | wcsncmp |
|
| | wcsncpy |
|
| | wcspbrk |
|
| | wcsrchr |
|
| | wcsrtombs |
|
| | wcsspn |
|
| | wcsstr |
|
| | wcstod, wcstof, wcstold |
|
| | wcstoimax |
|
| | wcstok |
|
| | wcstol, wcstoll |
|
| | wcstold |
|
| | wcstoll |
|
| | wcstombs |
|
| | wcstoul, wcstoull |
|
| | wcstoumax |
|
| | wcsxfrm |
|
| | wctob |
|
| | wctomb |
|
| | wctrans |
|
| | wctype |
|
| | wmemchr |
|
| | wmemcmp |
|
| | wmemcpy |
|
| | wmemmove |
|
| | wmemset |
|
| | wprintf |
|
| | wscanf |
| |
Part III:
Basic Tools |
|
| |
Chapter 18.
Compiling with GCC |
|
| |
Section 18.1.
The GNU Compiler Collection |
|
| |
Section 18.2.
Obtaining and Installing GCC |
|
| |
Section 18.3.
Compiling C Programs with GCC |
|
| |
Section 18.4.
C Dialects |
|
| |
Section 18.5.
Compiler Warnings |
|
| |
Section 18.6.
Optimization |
|
| |
Section 18.7.
Debugging |
|
| |
Section 18.8.
Profiling |
|
| |
Section 18.9.
Option and Environment Variable Summary |
|
| |
Chapter 19.
Using make to Build C Programs |
|
| |
Section 19.1.
Targets, Prerequisites, and Commands |
|
| |
Section 19.2.
The Makefile |
|
| |
Section 19.3.
Rules |
|
| |
Section 19.4.
Comments |
|
| |
Section 19.5.
Variables |
|
| |
Section 19.6.
Phony Targets |
|
| |
Section 19.7.
Other Target Attributes |
|
| |
Section 19.8.
Macros |
|
| |
Section 19.9.
Functions |
|
| |
Section 19.10.
Directives |
|
| |
Section 19.11.
Running make |
|
| |
Chapter 20.
Debugging C Programs with GDB |
|
| |
Section 20.1.
Installing GDB |
|
| |
Section 20.2.
A Sample Debugging Session |
|
| |
Section 20.3.
Starting GDB |
|
| |
Section 20.4.
Using GDB Commands |
| | About the Authors |
| | Colophon |
| | Index |