The C Programming Language[C程序设计语言] -- (英文第2版) .pdf

所需积分/C币:0 2015-12-09 09:29:26 2.77MB PDF
收藏 收藏
举报

The C Programming Language[C程序设计语言] -- (英文第2版) -- B.W.Kernighan & D.M.Ritchie 著.pdf
4.11.1 File inclusion 79 4.11.2 Macro Substitution 80 4.11.3 Conditional Inclusion 82 Chapter5- Pointers and arrays……………………,…,,……,………………83 5.1 Pointers and ddresses 83 5.2 Pointers and Function Arguments 84 5.3 Pointers and arrays 87 5.4 Address arithmetic 90 5.5 Character pointers and functions………93 5.6 Pointer Arrays; Pointers to Pointers 96 5.7 Multi-dimensional Arrays 5.8 Initialization of Pointer Arrays.....................................101 5.9 Pointers vs. Multi-dimensional arrays..................................101 5.10 Command-line Arguments ...............................................102 5.11 Pointers to functions 106 5.12 Complicated Declarations. .........108 Chapter 6- structures 114 6.1 Basics of structures 番垂。垂看4垂非垂。音 番·.垂垂·看看垂 114 6.2 Structures and functions 116 6.3 Arrays of Structures 118 6. 4 Pointers to structures 垂·垂·看。音;4, 122 6.5 Self-referential structures 124 6.6 Table Lookup.......... 127 6.7 Typedef. 129 6.8 Unions… 131 6.9 Bit-fields 132 Chapter 7-Input and Output... 135 7. 1 Standard Input and output. .....................................135 7.2 Formatted Output-printf 137 7.3 Variable-length Argument Lists ··.···· 38 7.4 Formatted Input- Scanf. 140 7.5 Filc access∴ ····· 142 76 Error Handling-Stderr and Exit……………………… 145 7.7 Line Input and output....……,,………………………………146 7. 8 Miscellaneous Functions 147 7.8.1 String Opcrations 147 7.8.2 Character Class Testing and conversion 148 7.8.3 Ungetc…148 7.8.4 Command Execution 148 7.8.5 Storage Management 148 7.8.6 Mathematical functions 149 7.8.7 Random number generation ·····4 149 Chapter8- The UNIX System Interface.……,… 151 81 File descriptors……… 15 152 8.3 Open, Creat, Close, Unlink 153 8.4 Random access - Lseek ..............................................................................................155 8.5 Example- An implementation of Fopen and 8.6 Example-Listing Directories 159 8.7 Example-A Storage Allocator ·:··:: 163 ppendix a - refere A rence manual .168 A 1 Introduction 168 A,2 Lexical conventions 看垂音垂音4 168 A. 2. 1 Tokens ..168 A.2.2 Comments..wwwwwwmwwwwwwww 168 A. 2. 3 Identifiers 168 A 2.4 Kevwords 169 A 2.5 Constants 169 A 2.6 String Literals 171 A.3 Syntax Notation………,…,…,…,…,…,…,…,…,…,…,……………………,171 A 4 Meaning of Identifiers 171 A.4.1 Storage Class ..17 A.4.2 Basic Types 172 A.4.3 Derived types…………,…,,…,…,…,…,,…,……,………………………,173 A.4.4 Type qualifiers…………….……………………………………173 A. 5 Objects and lvalues ……173 A 6 Conversions 173 A.6.1 Integral Promotion 174 A.6.2 Integral Conversions.............................174 A.6.3 Integer and Floating.. …174 A.6.4 Floating Typcs 174 A 6.5 Arithmetic Conversions …174 A.6.6 Pointers and Integers …………………175 A 6.7 Void 176 A 6. 8 Pointers to Void 176 A7 Expressions...........................176 A 7.1 Pointer Conversion ……177 A 7.2 Primary Expressions 177 A. 7. 3 Postfix Expressions 177 A. 7. 4 Unary Operators 179 A.7.5 Casts 181 A.7.6 Multiplicative Operators 181 A.7.7 Additive Operators……… 182 A.7.& Shift Opcrators 182 A 7.9 Relational Operators 183 A.7.10 Equality Operators.……183 A.7.11 Bitwise AND Operator.……,…,…,…,…,…,……………183 A7 12 Bitwise ExclusiVe OR Opcrator 184 A 7.13 Bitwise Inclusive OR Operator 184 A.7.14 Logical AND Operator…...……,…,….,………………………………184 A.7.15 Logical OR Operator…..,.,…,…,,…,,,…….…184 A 7 16 Conditional operato 184 A7.7 Assignment Expressions…… 185 A 7.18 Comma Operator 185 A.7.19 Constant Expressions.........................................186 A 8 Declarations 186 A.8.1 Storagc Class Spccificrs 187 A 8.2 Type Specif 188 A.8.3 Structure and union declarations,……18 A 8.4 Enumerations 191 A.8.5 Declarators 192 A.8.6 Meaning of Declarators 193 A 8.7 Initialization 196 A.8.8 Type names… ……198 A.8.9 Typedef.…,…,……,…,…,…,…,,…,………………………………………………19 A 8.10 Type equivalence A 9 Statements 199 A.9.1 Labeled Statements. A.9.2 Expression Statement .200 A.9.3 Compound Statement 200 A 9.4 Selection statements ··- 201 A.9.5 Iteration statements….……………,…,201 A.9.6 Jump statements……,……………………………………202 A 10 External declarations ….………………203 A 10.1 Function Definitions 203 A.10.2 External declaration5……204 A.11 Scope and Linkage,,.,.,,,,………205 A. 11. 1 Lexical Scope 205 A 11.2 Linkage. 206 A.12 Preprocessing……… 206 A.12.1 Trigraph Sequences…………....…………...….…………207 A.12.2 Line splicing……………………………………207 A 12.3 Macro Dcfinition and Expansion 207 A 12.4 File inclusion 00 A 12.5 Conditional Compilation.............. 210 A.12.6 Line control∴.……211 A 12. 7 Error Generation 211 A 12.8 Pragmas 翻D音音音 212 A 12.9 Null directive …212 A. 12.10 Predefined names ..........................................................................................212 grammar 212 Appendix b-standard library ·..··.·+········ 220 B. 1 Input and Output: <stdio. h>. .220 B.1.1 File operations....,.,.,,,,,,,,…,,……, 220 B 1.2 Formatted Output...... 222 B 1.3 Formatted Input 223 B 1.4 Character Input and output functions 音看番音番 25 B.1.5 Direct Input and Output Functions……………,.….……………………………25 B.1.6 File positioning Functions…...,.,,,,,,,,……,…26 B. 1. 7 Error Functions 226 B2 Character Class Tests: <ctype. h> 226 B.3 String Functions:< string.h>…,………………,27 B 4 Mathematical Functions B 5 Utility Functions: <stdlib. h> 229 B 6 Diagnostics: <assert. h>.. 231 B8 Non-local Jumps: <seimph! arg. h> B7 Variable Argument Lists: <stdarg.h> ·····4 231 .··· 232 B9 Signals: <signal. h .232 B 10 Datc and Time functions <timc.h> 233 B 11 Implementation-defined limits: <limits.h> and <float.h> 234 Appendix c -Summary of Changes …………236 Preface The computing world has undergone a revolution since the publication of The c Programming Language in 1978. Big computers arc much bigger, and personal computers have capabilities that rival mainframes of a decade ago. During this time, C has changed too although only modestly, and it has spread far beyond its origins as the language of the UNIX operating system. The growing popularity of C, the changes in the language over the years, and the creation of compilers by groups not involved in its design, combined to demonstrate a need for a more precise and more contemporary definition of the language than the first edition of this book provided. In 1983, the American National Standards Institute(ANSD) established a committee whose goal was to produce an unambiguous and machine-independent definition of the language C", while still retaining its spirit. The result is the ANSi standard for C The standard formalizes constructions that were hinted but not described in the first edition particularly structure assignment and enumerations. It provides a new form of function declaration that permits cross-checking of definition with use. It specifies a standard library with an extensive set of functions for performing input and output, memory management string manipulation, and similar tasks. It makes precise the behavior of features that were not spelled out in the original definition, and at the same time states explicitly which aspects of the language remain machine-dependent This Second Edition of The C Programming Language describes C as defined by the ANSI standard. Although we have noted the places where the language has evolved we have chosen to write exclusively in the new form. For the most part, this makes no significant difference the most visible change is the new form of function declaration and definition. Modern compilers already support most features of the standard We have tried to retain the brevity of the first edition. C is not a big language, and it is not wcll served by a big book. Wc have improved the exposition of critical fcaturcs, such as pointers, that are central to C programming. We have refined the original examples, and have added new examples in several chapters. For instance, the treatment of complicated declarations is augmented by programs that convert declarations into words and vice versa As before, all cxamples have bccn tested directly from the text, which is in machinc-rcadablc form ppendix A, the reference manual, is not the standard, but our attempt to convey the essentials of the standard in a smaller space. It is meant for easy comprehension by programmers, but not as a definition for compiler writers-- that role properly belongs to the standard itself. Appendix b is a summary of the facilities of the standard library. It too is meant for reference by programmers, not implementers Appendix C is a concise summary of the changes from the original version As we said in the preface to the first edition, C wears well as one's experience with it grows".With a decade more experience, we still feel that way. We hope that this book will help you learn C and use it wel We are deeply indebted to friends who helped us to produce this second edition. Jon bently, Doug Gwyn, Doug Mcllroy, Peter Nelson, and rob pike gave us perceptive comments on almost every page of draft manuscripts. We are grateful for careful reading by Al Aho, Dennis Allison, Joe Campbell, G.R. Emlin, Karen Fortgang, Allen Holub, Andrew Hume, Dave Kristol, John Linderman, Dave Prosser, Gene Spafford, and Chris van Wyk. We also received helpful suggestions from Bill Cheswick, Mark Kernighan, Andy Koenig, Robin Lake, Tom London, Jim Reeds, Clovis Tondo, and Peter Weinberger. Dave Prosser answered many detailed questions about the ANSI standard. We used Bjarne Stroustrup's C++ translator extensively for local testing of our programs, and dave Kristol provided us with an ANSI C compiler for final testing. Rich Drechsler helped greatly with typesetting Our sincere thanks to all Brian w. Kernighan Dennis m. ritchie Preface to the first edition C is a general-purpose programming language with features economy of expression, modern flow control and data structures, and a rich sct of operators c is not a vcry high level" language, nor a big"one, and is not specialized to any particular area of application. But its absence of restrictions and its generality make it more convenient and effective for many tasks than supposedly more powerful languages C was originally designed for and implemented on the uNiX operating system on the dEC PDP-ll, by Dennis ritchie. The operating system, the C compiler, and essentially all UNIX applications programs(including all of the software used to prepare this book)are written in C. Production compilers also exist for several other machines, including the IBM System/370 the Honeywell 6000, and the Interdata 8/32. C is not tied to any particular hardware or system, however, and it is easy to write programs that will run without change on any machine that supports C. This book is mcant to help the reader learn how to program in C. It contains a tutorial introduction to get new users started as soon as possible, separate chapters on each major feature, and a reference manual. Most of the treatment is based on reading, writing and revising examples, rather than on mere statements of rules. For the most part, the examples are complete, real programs rather than isolated fragments. All examples have been tested directly from the text, which is in machine-readable form. Besides showing how to make effective use of the language, we have also tried where possible to illustrate useful algorithms and principles of good style and sound design The book is not an introductory programming manual; it assumes some familiarity with basic programming concepts like variables, assignment statements, loops, and functions Nonetheless, a novice programmer should be able to read along and pick up the language although access to more knowledgeable colleague will help In our cxpcricncc, C has proven to bc a pleasant, expressive and versatile language for a widc variety of programs. It is easy to learn, and it wears well as on's experience with it grows. We hope that this book will help you to use it well The thoughtful criticisms and suggestions of many friends and colleagues have added greatl to this book and to our pleasure in writing it. In particular, Mike Bianchi, Jim Blue, St Feldman, Doug Mcllroy Bill Roome, Bob Rosin and Larry rosler all read multiple volumes with care. We are also indebted to Al aho Steve bourne, Dan Dvorak, chuck Haley debbie Haley, Marion Harris, Rick Holt, Steve Johnson, John Mashey, Bob Mitze, Ralph Muha Peter Nelson, Elliot Pinson, Bill Plauger, Jerry Spivack, Ken Thompson, and Peter Weinberger for helpful comments at various stages, and to Mile lesk and Joe Ossanna for invaluable assistance with typesetting Brian w. Kernighan Dennis m. ritchie Chapter 1-a Tutorial Introduction Let us begin with a quick introduction in C. Our aim is to show the essential elements of the language in rcal programs, but without getting bogged down in details, rulcs, and exceptions At this point, we are not trying to be complete or even precise(Save that the examples are meant to be correct). We want to get you as quickly as possible to the point where you can write useful programs, and to do that we have to concentrate on the basics: variables and constants, arithmetic, control flow, functions, and the rudiments of input and output. We arc intentionally leaving out of this chapter features of c that are important for writing bigger programs. These include pointers, structures, most of Cs rich set of operators, several control- flow statements, and the standard library This approach and its drawbacks. Most notable is that the complete story on any particular feature is not found here, and the tutorial, by being brief, may also be misleading. And because the examples do not use the full power of C, they are not as concise and elegant as they might be. We have tried to minimize these effects, but be warned. Another drawback is that latcr chapters will ncccssarily repeat somc of this chaptcr. We hope that the repetition will help you more than it annoys In any case, experienced programmers should be able to extrapolate from the material in this chapter to their own programming needs. Beginners should supplement it by writing small similar programs of their own. Both groups can use it as a framework on which to hang the more detailed descriptions that begin in Chapter 2. 1.1 Getting Started The only way to learn a new programming language is by writing programs in it. The first program to write is the samc for all languages Print the words hello worl This is a big hurdle to leap over it you have to be able to create the program text somewhere compile it successfully, load it, run it, and find out where your output went. With thesc mechanical details mastered, everything else is comparatively n C, the program to print hello, world"is #include <stdio. h> printf("hello, world\n")i Just how to run this program depends on the system you are using. As a specific example, on the unix operating system you must create the program in a file whose name ends in.c such as hello. c, then compile it with the command c hello 10 If you haven't botched anything, such as omitting a character or misspelling something, the compilation will procced silently, and make an cxccutablc filc called a out. If you run acut by typing the command a. out it will print hello, world On othcr systcms, thc rulcs will bc diffcrent; check with a local cxpcrt Now, for some explanations about the program itself. A C program, whatever its size, consists of functions and variables. a function contains statements that specify the computing operations to be done, and variables store values used during the computation. C functions are like the subroutines and functions in Fortran or the procedures and functions of Pascal. Our example is a function named main. Normally you are at liberty to give functions whatever names you like, but main"is special your program begins executing at the beginning of main. This means that every program must have a main somewhere hain will usually call other functions to help perform its job, some that you wrote, and others from libraries that are provided for you. The first line of the program +include <stdio. h> tells the compiler to include information about the standard input/output library: the line appears at the beginning of many C source files. The standard library is described in Chapter 7 and Appendix b One method of communicating data between functions is for the calling function to provide a list of values, called arguments, to the function it calls. The parentheses after the function name surround the argument list. In this example, main is defined to be a function that expects no arguments, which is indicated by the empty list( #include <s-dio. h> include information about standard library main define a function caiied main that received no argument value statements of main are enclosed in braces print=( hello, world\n") main calis library function printf to print this sequence of characters An represents the newline character The first C program The statements of a function arc enclosed in braces ) The function main contains only onc statement printf("hello, world\n")i

...展开详情
试读 127P The C Programming Language[C程序设计语言] -- (英文第2版) .pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    抢沙发
    一个资源只可评论一次,评论内容不能少于5个字
    关注 私信 TA的资源
    上传资源赚积分,得勋章
    最新推荐
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf 0积分/C币 立即下载
    1/127
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第1页
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第2页
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第3页
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第4页
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第5页
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第6页
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第7页
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第8页
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第9页
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第10页
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第11页
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第12页
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第13页
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第14页
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第15页
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第16页
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第17页
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第18页
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第19页
    The C Programming Language[C程序设计语言] -- (英文第2版) .pdf第20页

    试读已结束,剩余107页未读...

    0积分/C币 立即下载 >