C programming course / PDF
C programming course / PDF
Table of Contents:
Chapter 1 - A Tutorial Introduction.........................................................................................9
1.1 Getting Started..............................................................................................................9
1.2 Variables and Arithmetic Expressions..........................................................................11
1.3 The for statement.........................................................................................................15
1.4 Symbolic Constants......................................................................................................17
1.5 Character Input and Output.........................................................................................17
1.5.1 File Copying..........................................................................................................18
1.5.2 Character Counting...............................................................................................19
1.5.3 Line Counting.......................................................................................................20
1.5.4 Word Counting.....................................................................................................21
1.6 Arrays..........................................................................................................................23
1.7 Functions.....................................................................................................................25
1.8 Arguments - Call by Value...........................................................................................28
1.9 Character Arrays..........................................................................................................29
1.10 External Variables and Scope.....................................................................................31
Chapter 2 - Types, Operators and Expressions.......................................................................35
2.1 Variable Names............................................................................................................35
2.2 Data Types and Sizes...................................................................................................35
2.3 Constants.....................................................................................................................36
2.4 Declarations.................................................................................................................38
2.5 Arithmetic Operators...................................................................................................39
2.6 Relational and Logical Operators.................................................................................39
2.7 Type Conversions........................................................................................................40
2.8 Increment and Decrement Operators............................................................................43
2.9 Bitwise Operators........................................................................................................45
2.10 Assignment Operators and Expressions......................................................................46
2.11 Conditional Expressions.............................................................................................47
2.12 Precedence and Order of Evaluation..........................................................................48
Chapter 3 - Control Flow.......................................................................................................50
3.1 Statements and Blocks.................................................................................................50
3.2 If-Else..........................................................................................................................50
3.3 Else-If..........................................................................................................................51
3.4 Switch..........................................................................................................................52
3.5 Loops - While and For.................................................................................................53
3.6 Loops - Do-While........................................................................................................56
3.7 Break and Continue.....................................................................................................57
3.8 Goto and labels............................................................................................................57
Chapter 4 - Functions and Program Structure........................................................................59
4.1 Basics of Functions......................................................................................................59
4.2 Functions Returning Non-integers................................................................................61
4.3 External Variables........................................................................................................63
4.4 Scope Rules.................................................................................................................68
4.5 Header Files.................................................................................................................69
4.6 Static Variables............................................................................................................70
4.7 Register Variables........................................................................................................71
4.8 Block Structure............................................................................................................71
4.9 Initialization.................................................................................................................72
4.10 Recursion...................................................................................................................73
4.11 The C Preprocessor....................................................................................................74
4.11.1 File Inclusion.......................................................................................................75
4.11.2 Macro Substitution..............................................................................................75
4.11.3 Conditional Inclusion..........................................................................................77
Chapter 5 - Pointers and Arrays.............................................................................................78
5.1 Pointers and Addresses................................................................................................78
5.2 Pointers and Function Arguments.................................................................................79
5.3 Pointers and Arrays......................................................................................................81
5.4 Address Arithmetic......................................................................................................84
5.5 Character Pointers and Functions.................................................................................87
5.6 Pointer Arrays; Pointers to Pointers.............................................................................89
5.7 Multi-dimensional Arrays.............................................................................................92
5.8 Initialization of Pointer Arrays.....................................................................................93
5.9 Pointers vs. Multi-dimensional Arrays..........................................................................94
5.10 Command-line Arguments..........................................................................................95
5.11 Pointers to Functions.................................................................................................98
5.12 Complicated Declarations.........................................................................................100
Chapter 6 - Structures..........................................................................................................105
6.1 Basics of Structures...................................................................................................105
6.2 Structures and Functions............................................................................................107
6.3 Arrays of Structures...................................................................................................109
6.4 Pointers to Structures.................................................................................................112
6.5 Self-referential Structures...........................................................................................113
6.6 Table Lookup............................................................................................................117
6.7 Typedef......................................................................................................................119
6.8 Unions.......................................................................................................................120
6.9 Bit-fields....................................................................................................................121
Chapter 7 - Input and Output...............................................................................................124
7.1 Standard Input and Output.........................................................................................124
7.2 Formatted Output - printf...........................................................................................125
7.3 Variable-length Argument Lists..................................................................................127
7.4 Formatted Input - Scanf.............................................................................................128
7.5 File Access.................................................................................................................130
7.6 Error Handling - Stderr and Exit................................................................................132
7.7 Line Input and Output................................................................................................134
7.8 Miscellaneous Functions............................................................................................135
7.8.1 String Operations................................................................................................135
7.8.2 Character Class Testing and Conversion..............................................................135
7.8.3 Ungetc................................................................................................................135
7.8.4 Command Execution...........................................................................................135
7.8.5 Storage Management..........................................................................................136
7.8.6 Mathematical Functions.......................................................................................136
7.8.7 Random Number generation................................................................................136
Chapter 8 - The UNIX System Interface..............................................................................138
8.1 File Descriptors..........................................................................................................138
8.2 Low Level I/O - Read and Write................................................................................139
8.3 Open, Creat, Close, Unlink........................................................................................140
8.4 Random Access - Lseek.............................................................................................142
8.5 Example - An implementation of Fopen and Getc.......................................................142
8.6 Example - Listing Directories.....................................................................................145
8.7 Example - A Storage Allocator..................................................................................149
Appendix A - Reference Manual..........................................................................................154
A.1 Introduction..............................................................................................................154
A.2 Lexical Conventions..................................................................................................154
A.2.1 Tokens...............................................................................................................154
A.2.2 Comments..........................................................................................................154
4
A.2.3 Identifiers...........................................................................................................154
A.2.4 Keywords...........................................................................................................154
A.2.5 Constants...........................................................................................................155
A.2.6 String Literals.....................................................................................................156
A.3 Syntax Notation........................................................................................................156
A.4 Meaning of Identifiers...............................................................................................157
A.4.1 Storage Class.....................................................................................................157
A.4.2 Basic Types........................................................................................................157
A.4.3 Derived types.....................................................................................................158
A.4.4 Type Qualifiers...................................................................................................158
A.5 Objects and Lvalues..................................................................................................158
A.6 Conversions..............................................................................................................159
A.6.1 Integral Promotion.............................................................................................159
A.6.2 Integral Conversions...........................................................................................159
A.6.3 Integer and Floating...........................................................................................159
A.6.4 Floating Types....................................................................................................159
A.6.5 Arithmetic Conversions......................................................................................159
A.6.6 Pointers and Integers..........................................................................................160
A.6.7 Void...................................................................................................................160
A.6.8 Pointers to Void.................................................................................................161
A.7 Expressions...............................................................................................................161
A.7.1 Pointer Conversion.............................................................................................161
A.7.2 Primary Expressions...........................................................................................161
A.7.3 Postfix Expressions............................................................................................162
A.7.4 Unary Operators.................................................................................................164
A.7.5 Casts..................................................................................................................165
A.7.6 Multiplicative Operators.....................................................................................165
A.7.7 Additive Operators.............................................................................................166
A.7.8 Shift Operators...................................................................................................166
A.7.9 Relational Operators...........................................................................................167
A.7.10 Equality Operators...........................................................................................167
A.7.11 Bitwise AND Operator.....................................................................................167
A.7.12 Bitwise Exclusive OR Operator........................................................................167
A.7.13 Bitwise Inclusive OR Operator.........................................................................168
A.7.14 Logical AND Operator.....................................................................................168
A.7.15 Logical OR Operator........................................................................................168
A.7.16 Conditional Operator........................................................................................168
A.7.17 Assignment Expressions...................................................................................169
A.7.18 Comma Operator..............................................................................................169
A.7.19 Constant Expressions.......................................................................................169
A.8 Declarations..............................................................................................................170
A.8.1 Storage Class Specifiers.....................................................................................170
A.8.2 Type Specifiers...................................................................................................171
A.8.3 Structure and Union Declarations.......................................................................172
A.8.4 Enumerations.....................................................................................................174
A.8.5 Declarators.........................................................................................................175
A.8.6 Meaning of Declarators......................................................................................176
A.8.7 Initialization.......................................................................................................178
A.8.8 Type names........................................................................................................180
A.8.9 Typedef..............................................................................................................181
A.8.10 Type Equivalence.............................................................................................181
A.9 Statements................................................................................................................181
A.9.1 Labeled Statements.............................................................................................182
5
A.9.2 Expression Statement.........................................................................................182
A.9.3 Compound Statement.........................................................................................182
A.9.4 Selection Statements..........................................................................................183
A.9.5 Iteration Statements...........................................................................................183
A.9.6 Jump statements.................................................................................................184
A.10 External Declarations..............................................................................................184
A.10.1 Function Definitions.........................................................................................185
A.10.2 External Declarations.......................................................................................186
A.11 Scope and Linkage..................................................................................................186
A.11.1 Lexical Scope...................................................................................................187
A.11.2 Linkage............................................................................................................187
A.12 Preprocessing..........................................................................................................187
A.12.1 Trigraph Sequences..........................................................................................188
A.12.2 Line Splicing....................................................................................................188
A.12.3 Macro Definition and Expansion.......................................................................188
A.12.4 File Inclusion....................................................................................................190
A.12.5 Conditional Compilation...................................................................................191
A.12.6 Line Control.....................................................................................................192
A.12.7 Error Generation..............................................................................................192
A.12.8 Pragmas............................................................................................................192
A.12.9 Null directive....................................................................................................192
A.12.10 Predefined names............................................................................................192
A.13 Grammar.................................................................................................................193
Appendix B - Standard Library............................................................................................199
B.1 Input and Output: <stdio.h>......................................................................................199
B.1.1 File Operations...................................................................................................199
B.1.2 Formatted Output...............................................................................................200
B.1.3 Formatted Input..................................................................................................202
B.1.4 Character Input and Output Functions................................................................203
B.1.5 Direct Input and Output Functions......................................................................204
B.1.6 File Positioning Functions...................................................................................204
B.1.7 Error Functions..................................................................................................205
B.2 Character Class Tests: <ctype.h>...............................................................................205
B.3 String Functions: <string.h>......................................................................................205
B.4 Mathematical Functions: <math.h>............................................................................206
B.5 Utility Functions: <stdlib.h>......................................................................................207
B.6 Diagnostics: <assert.h>..............................................................................................209
B.7 Variable Argument Lists: <stdarg.h>.........................................................................209
B.8 Non-local Jumps: <setjmp.h>....................................................................................210
B.9 Signals: <signal.h>....................................................................................................210
B.10 Date and Time Functions: <time.h>.........................................................................210
B.11 Implementation-defined Limits: <limits.h> and <float.h>.........................................212
Click here for Download PDF / FREE
C programming course / PDF
0 commentaires: