Brian W.Kernighan,贝尔实验室计算科学研究中心高级研究人员,著名的计算机科学家。他参加了UNIX系统、C语言、AWK语言和许多其他系统的开发,同时出版了许多在计算机领域具有影响的著作,包括《The Elements of Programming Style》、《The Practice of Programming》、《The UNIX Programming Environment》、《The AWK Language》、《Software Tools》等。
目录
· · · · · ·
序第1版序IntroductionChapter 1. A Tutorial Introduction 1.1 Getting Started 1.2 Variables and Arithmetic Expressions 1.3 The For Statement 1.4 Symbolic Constants 1.5 Character Input and Output 1.6 Arrays 1.7 Functions 1.8 Arguments--Call by Value 1.9 Character Arrays 1.10 External Variables and ScopeChapter 2. Types, Operators, and Expressions 2.1 Variable Names 2.2 Data Types and Sizes 2.3 Constants 2.4 Declarations 2.5 Arithmetic Operators 2.6 Relational and Logical Operators 2.7 Type Conversions 2.8 Increment and Decrement Operators 2.9 Bitwise Operators 2.10 Assignment Operators and Expressions 2.11 Conditional Expressions 2.12 Precedence and Order of Evaluation Chapter 3. Control Flow 3.1 Statements and Blocks 3.2 If-Else 3.3 Else-If 3.4 Switch 3.5 Loops--While and For 3.6 Loops-Do-while 3.7 Break and Continue 3.8 Goto and LabelsChapter 4. Functions and Program Structure 4.1 Basics of Functions 4.2 Functions Returning Non-integers 4.3 External Variables 4.4 Scope Rules 4.5 Header Files 4.6 Static Variables 4.7 Register Variables 4.8 Block Structure 4.9 Initialization 4.10 Recursion 4.11 The C PreprocessorChapter 5. Pointers and Arrays 5.1 Pointers and Addresses 5.2 Pointers and Function Arguments 5.3 Pointers and Arrays 5.4 Address Arithmetic 5.5 Character Pointers and Functions 5.6 Pointer Arrays; Pointers to Pointers 5.7 Multi-dimensional Arrays 5.8 Initialization of Pointer Arrays 5.9 Pointers vs. Multi-dimensional Arrays 5.10 Command-line Arguments 5.11 Pointers to Functions 5.12 Complicated DeclarationsChapter 6. Structures 6.1 Basics of Structures 6.2 Structures and Functions 6.3 Arrays of Structures 6.4 Pointers to Structures 6.5 Self-referential Structures 6.6 Table Lookup 6.7 Typedef 6.8 Unions 6.9 Bit-fieldsChapter 7. Input and Output 7.1 Standard Input and Output 7.2 Formatted Output--Printf 7.3 Variable-length Argument Lists 7.4 Formatted Input-Scanf 7.5 File Access 7.6 Error Handling--Stderr and Exit 7.7 Line Input and Output 7.8 Miscellaneous FunctionsChapter 8. The UNIX System Interface 8.1 File Descriptors 8.2 Low Level I/O-Read and Write 8.3 Open, Creat, Close, Unlink 8.4 Random Access--Lscek 8.5 Example--An Implementation of Fopen and Getc 8.6 Example--Listing Directories 8.7 Example--A Storage AllocatorAppendix A. Reference Marital AI Introduction A2 Lexical Conventions A3 Syntax Notation A4 Meaning of Identifiers A5 Objects and Lvalues A6 Conversions A7 Expressions A8 Declarations A9 Statements AI0 External Declarations All Scopeand Linkage A12 Preprocessing A13 GrammarAppendix B. Standard Library B1 Input and Output: <stdio.h> B2 Character Class Tests: <ctype.h> B3 String Functions: <string.h> B4 Mathematical Functions: <math.h> B5 Utility Functions: <stdlib.h> B6 Diagnostics: <assert.h> B7 Variable Argument Lists: <stdarg.h> B8 Non-local Jumps: <setjmp.h> B9 Signals: <signal.h> B10 Date and Time Functions: <time.h> BI 1 Implementation-defined Limits: <limits.h> and <float.h>Appendix C. Summary of ChangesIndex
序第1版序IntroductionChapter 1. A Tutorial Introduction 1.1 Getting Started 1.2 Variables and Arithmetic Expressions 1.3 The For Statement 1.4 Symbolic Constants 1.5 Character Input and Output 1.6 Arrays 1.7 Functions 1.8 Arguments--Call by Value 1.9 Character Arrays 1.10 External Variables and ScopeChapter 2. Types, Operators, and Expressions 2.1 Variable Names 2.2 Data Types and Sizes 2.3 Constants 2.4 Declarations 2.5 Arithmetic Operators 2.6 Relational and Logical Operators 2.7 Type Conversions 2.8 Increment and Decrement Operators 2.9 Bitwise Operators 2.10 Assignment Operators and Expressions 2.11 Conditional Expressions 2.12 Precedence and Order of Evaluation Chapter 3. Control Flow 3.1 Statements and Blocks 3.2 If-Else 3.3 Else-If 3.4 Switch 3.5 Loops--While and For 3.6 Loops-Do-while 3.7 Break and Continue 3.8 Goto and LabelsChapter 4. Functions and Program Structure 4.1 Basics of Functions 4.2 Functions Returning Non-integers 4.3 External Variables 4.4 Scope Rules 4.5 Header Files 4.6 Static Variables 4.7 Register Variables 4.8 Block Structure 4.9 Initialization 4.10 Recursion 4.11 The C PreprocessorChapter 5. Pointers and Arrays 5.1 Pointers and Addresses 5.2 Pointers and Function Arguments 5.3 Pointers and Arrays 5.4 Address Arithmetic 5.5 Character Pointers and Functions 5.6 Pointer Arrays; Pointers to Pointers 5.7 Multi-dimensional Arrays 5.8 Initialization of Pointer Arrays 5.9 Pointers vs. Multi-dimensional Arrays 5.10 Command-line Arguments 5.11 Pointers to Functions 5.12 Complicated DeclarationsChapter 6. Structures 6.1 Basics of Structures 6.2 Structures and Functions 6.3 Arrays of Structures 6.4 Pointers to Structures 6.5 Self-referential Structures 6.6 Table Lookup 6.7 Typedef 6.8 Unions 6.9 Bit-fieldsChapter 7. Input and Output 7.1 Standard Input and Output 7.2 Formatted Output--Printf 7.3 Variable-length Argument Lists 7.4 Formatted Input-Scanf 7.5 File Access 7.6 Error Handling--Stderr and Exit 7.7 Line Input and Output 7.8 Miscellaneous FunctionsChapter 8. The UNIX System Interface 8.1 File Descriptors 8.2 Low Level I/O-Read and Write 8.3 Open, Creat, Close, Unlink 8.4 Random Access--Lscek 8.5 Example--An Implementation of Fopen and Getc 8.6 Example--Listing Directories 8.7 Example--A Storage AllocatorAppendix A. Reference Marital AI Introduction A2 Lexical Conventions A3 Syntax Notation A4 Meaning of Identifiers A5 Objects and Lvalues A6 Conversions A7 Expressions A8 Declarations A9 Statements AI0 External Declarations All Scopeand Linkage A12 Preprocessing A13 GrammarAppendix B. Standard Library B1 Input and Output: <stdio.h> B2 Character Class Tests: <ctype.h> B3 String Functions: <string.h> B4 Mathematical Functions: <math.h> B5 Utility Functions: <stdlib.h> B6 Diagnostics: <assert.h> B7 Variable Argument Lists: <stdarg.h> B8 Non-local Jumps: <setjmp.h> B9 Signals: <signal.h> B10 Date and Time Functions: <time.h> BI 1 Implementation-defined Limits: <limits.h> and <float.h>Appendix C. Summary of ChangesIndex
· · · · · · (收起)
If a name that has not been previously declared occurs in an expression and is followed by a left parenthesis, it is declared by context to be a function name, the function is assumed to return an int, and nothing is assumed about its arguments. Furthermore, if a function declaration does not include arguments, as in
double atof();
that too is taken to mean that nothing is to be assumed about the arguments of atof; all parameter checking is turned off. This special meaning of the empty argument list is intended to permit older C programs to compile with new compilers. But it’s a bad idea to use it with new programs. If the function takes arguments, declare them; if it takes no arguments, use void. (查看原文)
0 有用 Creasy 2010-12-05 04:37:27
masterpiece
2 有用 WingStone 2015-11-16 20:56:05
终于拜读完毕,购书至今四年零三个月。
9 有用 晔 2011-12-14 21:15:55
C89标准现在看来还是偏老了,而且有些非常tricky的编码风格我觉得也不值得提倡。书中的例子是亮点,几乎全是UNIX下的经典程序,实践性满点。不过也导致信息量很大,个人以为算是有利有弊吧。
1 有用 雨落莎 2011-07-21 20:58:51
这是本需要仔细读的书,我感觉重要的不是里面的语法介绍,而是作者编程的思想,那些例子闪耀着思维的光辉,也让我知道了Shell下的命令是如何来的了。
0 有用 forgetthisuser 2011-12-25 10:12:15
过时……