C in a Nutshell. The Definitive Reference. 2nd Edition - Helion
ISBN: 978-14-919-2418-1
stron: 824, Format: ebook
Data wydania: 2015-12-10
Księgarnia: Helion
Cena książki: 186,15 zł (poprzednio: 216,45 zł)
Oszczędzasz: 14% (-30,30 zł)
The new edition of this classic O’Reilly reference provides clear, detailed explanations of every feature in the C language and runtime library, including multithreading, type-generic macros, and library functions that are new in the 2011 C standard (C11). If you want to understand the effects of an unfamiliar function, and how the standard library requires it to behave, you’ll find it here, along with a typical example.
Ideal for experienced C and C++ programmers, this book also includes popular tools in the GNU software collection. You’ll learn how to build C programs with GNU Make, compile executable programs from C source code, and test and debug your programs with the GNU debugger.
In three sections, this authoritative book covers:
- C language concepts and language elements, with separate chapters on types, statements, pointers, memory management, I/O, and more
- The C standard library, including an overview of standard headers and a detailed function reference
- Basic C programming tools in the GNU software collection, with instructions on how use them with the Eclipse IDE
Osoby które kupowały "C in a Nutshell. The Definitive Reference. 2nd Edition", wybierały także:
- Windows Media Center. Domowe centrum rozrywki 66,67 zł, (8,00 zł -88%)
- Ruby on Rails. Ćwiczenia 18,75 zł, (3,00 zł -84%)
- Przywództwo w świecie VUCA. Jak być skutecznym liderem w niepewnym środowisku 58,64 zł, (12,90 zł -78%)
- Scrum. O zwinnym zarządzaniu projektami. Wydanie II rozszerzone 58,64 zł, (12,90 zł -78%)
- Od hierarchii do turkusu, czyli jak zarządzać w XXI wieku 58,64 zł, (12,90 zł -78%)
Spis treści
C in a Nutshell. The Definitive Reference. 2nd Edition eBook -- spis treści
- Preface
- How This Book Is Organized
- Part I
- Part II
- Part III
- Further Reading
- Conventions Used in This Book
- Using Code Examples
- Safari Books Online
- How to Contact Us
- Acknowledgments
- Peter
- Tony
- How This Book Is Organized
- I. Language
- 1. Language Basics
- Characteristics of C
- The Structure of C Programs
- Source Files
- Comments
- Character Sets
- Wide Characters and Multibyte Characters
- Wide characters
- Multibyte characters
- Conversion
- Universal Character Names
- Digraphs and Trigraphs
- Wide Characters and Multibyte Characters
- Identifiers
- Identifier Name Spaces
- Identifier Scope
- How the C Compiler Works
- The C Compilers Translation Phases
- Tokens
- 2. Types
- Typology
- Integer Types
- Integer Types Defined in Standard Headers
- Integer types with exact width (C99)
- Integer Types Defined in Standard Headers
- Floating-Point Types
- Complex Floating-Point Types
- Enumerated Types
- The Type void
- void in Function Declarations
- Expressions of Type void
- Pointers to void
- The Alignment of Objects in Memory
- 3. Literals
- Integer Constants
- Floating-Point Constants
- Decimal Floating-Point Constants
- Hexadecimal Floating-Point Constants
- Character Constants
- Types and Values of Character Constants
- Escape Sequences
- String Literals
- 4. Type Conversions
- Conversion of Arithmetic Types
- Hierarchy of Types
- Integer Promotion
- Usual Arithmetic Conversions
- Other Implicit Type Conversions
- The Results of Arithmetic Type Conversions
- Conversions to _Bool
- Conversions to unsigned integer types other than _Bool
- Conversions to signed integer types
- Conversions to real floating-point types
- Conversions to complex floating-point types
- Conversion of Nonarithmetic Types
- Array and Function Designators
- Explicit Pointer Conversions
- Object pointers
- Function pointers
- Implicit Pointer Conversions
- Pointers to void
- Pointers to qualified object types
- Null pointer constants
- Conversions Between Pointer and Integer Types
- Conversion of Arithmetic Types
- 5. Expressions and Operators
- How Expressions Are Evaluated
- Generic Selections (C11)
- Lvalues
- Side Effects and Sequence Points
- Operator Precedence and Associativity
- Operators in Detail
- Arithmetic Operators
- Standard arithmetic
- Pointer arithmetic
- Assignment Operators
- Simple assignment
- Compound assignments
- Increment and Decrement Operators
- Comparative Operators
- Logical Operators
- Bitwise Operators
- Boolean bitwise operators
- Shift operators
- Memory Addressing Operators
- The & and * operators
- Elements of arrays
- Members of structures and unions
- Other Operators
- Function calls
- Compound literals
- The sizeof operator
- The _Alignof operator
- The conditional operator
- The comma operator
- Arithmetic Operators
- Constant Expressions
- Integer Constant Expressions
- Other Constant Expressions
- How Expressions Are Evaluated
- 6. Statements
- Expression Statements
- Block Statements
- Loops
- while Statements
- for Statements
- dowhile Statements
- Nested Loops
- Selection Statements
- if Statements
- switch Statements
- Unconditional Jumps
- The break Statement
- The continue Statement
- The goto Statement
- The return Statement
- 7. Functions
- Function Definitions
- Functions and Storage Class Specifiers
- K&R-Style Function Definitions
- Function Parameters
- Arrays as Function Parameters
- The main() Function
- Function Declarations
- Declaring Optional Parameters
- Declaring Variable-Length Array Parameters
- How Functions Are Executed
- Pointers as Arguments and Return Values
- Inline Functions
- Non-Returning Functions
- Recursive Functions
- Variable Numbers of Arguments
- Function Definitions
- 8. Arrays
- Defining Arrays
- Fixed-Length Arrays
- Variable-Length Arrays
- Accessing Array Elements
- Initializing Arrays
- Writing Initialization Lists
- Initializing Specific Elements
- Strings
- Multidimensional Arrays
- Matrices
- Declaring Multidimensional Arrays
- Initializing Multidimensional Arrays
- Arrays as Arguments of Functions
- Defining Arrays
- 9. Pointers
- Declaring Pointers
- Null Pointers
- void Pointers
- Initializing Pointers
- Operations with Pointers
- Using Pointers to Read and Modify Objects
- Modifying and Comparing Pointers
- Pointers and Type Qualifiers
- Constant Pointers and Pointers to Constant Objects
- Restricted Pointers
- Pointers to Arrays and Arrays of Pointers
- Array Pointers
- Pointer Arrays
- Pointers to Functions
- Declaring Pointers
- 10. Structures, Unions, and Bit-Fields
- Structures
- Defining Structure Types
- Structure Objects and typedef Names
- Incomplete Structure Types
- Accessing Structure Members
- Initializing Structures
- Initializing Specific Members
- Structure Members in Memory
- Flexible Structure Members
- Pointers as Structure Members
- Unions
- Defining Union Types
- Initializing Unions
- Anonymous Structures and Unions
- Bit-Fields
- Structures
- 11. Declarations
- Object and Function Declarations
- Examples
- Storage Class Specifiers
- Type Qualifiers
- Declarations and Definitions
- Complex Declarators
- Type Names
- typedef Declarations
- _Static_assert Declarations
- Linkage of Identifiers
- External Linkage
- Internal Linkage
- No Linkage
- Storage Duration of Objects
- Static Storage Duration
- Thread Storage Duration
- Automatic Storage Duration
- Initialization
- Implicit Initialization
- Explicit Initialization
- Object and Function Declarations
- 12. Dynamic Memory Management
- Allocating Memory Dynamically
- Characteristics of Allocated Memory
- Resizing and Releasing Memory
- An All-Purpose Binary Tree
- Characteristics
- Implementation
- Generating an Empty Tree
- Inserting New Data
- Finding Data in the Tree
- Removing Data from the Tree
- Traversing a Tree
- A Sample Application
- 13. Input and Output
- Streams
- Text Streams
- Binary Streams
- Files
- File Position
- Buffers
- The Standard Streams
- Opening and Closing Files
- Opening a File
- Access Modes
- Closing a File
- Reading and Writing
- Byte-Oriented and Wide-Oriented Streams
- Error Handling
- Return values and status flags
- The error variable errno
- Unformatted I/O
- Reading characters
- Putting a character back
- Writing characters
- Reading strings
- Writing strings
- Reading and writing blocks
- Formatted Output
- The printf() function family
- The format string
- Field widths
- Printing characters and strings
- Printing integers
- Printing floating-point numbers
- Formatted Input
- The scanf() function family
- The format string
- Field widths
- Reading characters and strings
- Reading integers
- Reading floating-point numbers
- Random File Access
- Obtaining the Current File Position
- Setting the File Access Position
- Streams
- 14. Multithreading
- Threads
- Creating Threads
- Other Thread Functions
- Accessing Shared Data
- Mutual Exclusion
- Atomic Objects
- Atomic Operations
- Memory Ordering
- Fences
- Communication Between Threads: Condition Variables
- Thread-Local Objects and Thread-Specific Storage
- Using Thread-Local Objects
- Using Thread-Specific Storage
- Threads
- 15. Preprocessing Directives
- Inserting the Contents of Header Files
- How the Preprocessor Finds Header Files
- Nested #include Directives
- Defining and Using Macros
- Macros Without Parameters
- Macros with Parameters
- Variable numbers of arguments
- The stringify operator
- The token-pasting operator
- Using Macros Within Macros
- Macro Scope and Redefinition
- Type-generic Macros
- Conditional Compiling
- The #if and #elif Directives
- The defined Operator
- The #ifdef and #ifndef Directives
- Defining Line Numbers
- Generating Error Messages
- The #pragma Directive
- The _Pragma Operator
- Predefined Macros
- Conditionally Defined Macros
- Inserting the Contents of Header Files
- II. Standard Library
- 16. The Standard Headers
- Using the Standard Headers
- Execution Environments
- Function and Macro Calls
- Reserved Identifiers
- Functions with Bounds-Checking
- Availability
- Runtime Constraints
- Contents of the Standard Headers
- assert.h
- complex.h
- ctype.h
- errno.h
- fenv.h
- Macro and type definitions for the floating-point environment
- Macro and type definitions for floating-point exceptions
- Macro definitions for rounding modes
- float.h
- Normalized representation of floating-point numbers
- Rounding mode and evaluation method
- Precision and value range
- inttypes.h
- Types
- Functions
- Macros
- iso646.h
- limits.h
- locale.h
- math.h
- The types float_t and double_t
- Classification macros
- Other macros in math.h
- setjmp.h
- signal.h
- stdalign.h
- stdarg.h
- stdatomic.h
- Types defined in stdatomic.h
- Macros Defined in stdatomic.h
- stdbool.h
- stddef.h
- stdint.h
- Value ranges of the integer types with specific widths
- Value ranges of other integer types
- Macros for integer constants
- stdio.h
- stdlib.h
- stdnoreturn.h
- string.h
- tgmath.h
- threads.h
- Types Defined in threads.h
- Enumeration constants defined in threads.h
- Macros defined in threads.h
- time.h
- uchar.h
- wchar.h
- wctype.h
- Using the Standard Headers
- 17. Functions at a Glance
- Input and Output
- Mathematical Functions
- Mathematical Functions for Integer Types
- Floating-Point Functions
- Function-Like Macros
- Type-generic macros
- Categories of floating-point values
- Comparison macros
- Pragmas for Arithmetic Operations
- The Floating-Point Environment
- Accessing status flags
- Rounding modes
- Saving the whole floating-point environment
- Error Handling
- Domain errors
- Range errors
- Character Classification and Conversion
- Character Classification
- Case Mapping
- String Processing
- Multibyte Characters
- Converting Between Numbers and Strings
- Searching and Sorting
- Memory Block Handling
- Dynamic Memory Management
- Date and Time
- Process Control
- Communication with the Operating System
- Signals
- Internationalization
- Nonlocal Jumps
- Multithreading (C11)
- Thread Functions
- Atomic Operations
- Debugging
- Error Messages
- 18. Standard Library Functions
- III. Basic Tools
- 19. Compiling with GCC
- The GNU Compiler Collection
- Obtaining and Installing GCC
- Compiling C Programs with GCC
- Step by Step
- Preprocessing
- Compiling
- Assembling
- Linking
- Non-standard libraries
- Passing options to the linker
- All of the above
- None of the above
- Multiple Input Files
- File types
- Mixed input types
- Dynamic Linking and Shared Object Files
- Freestanding Programs
- Step by Step
- C Dialects
- Compiler Warnings
- Optimization
- The -O Levels
- The -f Flags
- Floating-Point Optimization
- Architecture-Specific Optimization
- Why Not Optimize?
- Debugging
- Profiling
- Option and Environment Variable Summary
- Command-Line Options
- Environment Variables
- 20. Using make to Build C Programs
- Targets, Prerequisites, and Commands
- The Makefile
- Rules
- The Command Script
- Pattern Rules
- Suffix Rules
- Built-In Rules
- Implicit Rule Chains
- Double-Colon Rules
- Comments
- Variables
- Assignment Operators
- Variables and Whitespace
- Target-Specific Variable Assignments
- The Automatic Variables
- Other Built-In Variables
- Environment Variables
- Phony Targets
- Other Target Attributes
- Macros
- Functions
- Built-In Functions
- Text-processing functions
- Filename-manipulation functions
- Conditions and flow control functions
- Operations on variables
- System functions
- User-Defined Functions
- Built-In Functions
- Directives
- Conditionals
- Includes
- Other Directives
- Running make
- Generating Header Dependencies
- Recursive make Commands
- Command-Line Options
- Special Targets Used as Runtime Options
- GCC Options for Generating Makefile Rules
- 21. Debugging C Programs with GDB
- Installing GDB
- A Sample Debugging Session
- Symbol Information
- Finding a Bug
- Starting GDB
- Command-Line Arguments
- Command-Line Options
- Passing arguments to the program being debugged
- Selecting files
- Selecting the user interface
- Executing command scripts
- Initialization Files
- Using GDB Commands
- Command Completion
- Displaying Help for Commands
- Status Information
- Status information on the program being debugged
- Status information on the debugger
- Running a Program in the Debugger
- Displaying Source Code
- Working with Breakpoints
- Setting and displaying breakpoints
- Deleting, disabling, and ignoring breakpoints
- Conditional breakpoints
- Resuming Execution After a Break
- Analyzing the Stack
- Displaying a call trace
- Displaying and changing the current stack frame
- Displaying arguments and local variables
- Displaying Data
- Displaying values of expressions
- Output formats
- Displaying memory blocks
- Watchpoints: Observing Operations on Variables
- Analyzing Core Files in GDB
- 22. Using an IDE with C
- IDEs for C
- The Eclipse IDE for C/C++
- Installing Eclipse CDT
- Running Eclipse
- Perspectives and Views
- Developing a C Program with Eclipse
- Creating a New C Project
- Editing
- Compiling and Running a Program
- Project Properties
- Debugging a C Program in Eclipse
- Starting the Debugger
- Setting Breakpoints
- Controlling Program Execution in the Debugger
- Further Information on Eclipse
- Index