ebook img

The C Book: Featuring the ANSI C Standard (Instruction Set) PDF

334 Pages·1991·1.3 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview The C Book: Featuring the ANSI C Standard (Instruction Set)

The C Book - Table of Contents Página 1 de 4 The C Book — Table of Contents This is a PDF version of a page on the GBdirect web site. The original page may be found at http://publications.gbdirect.co.uk/c_book/. This is the PDF version of The C Book, second edition by Mike Banahan, Declan Brady and Doran, originally published by Addison Wesley in 1991. This version is made freely available [http://publications.gbdirect.co.uk/c_book/copyright.html]. While this book is no longer in print, it's content is still very relevant today. The C language i popular, particularly for open source software [http://ebusiness.gbdirect.co.uk/OpenSourceM and embedded programming [http://training.gbdirect.co.uk/courses/c/embedded_c_training. hope this book will be useful, or at least interesting, to people who use C. If you have any comments about this book, or if you find any bugs in its presentation, please message to [email protected]. This PDF version made by Carlos José de Almeida Pereira - carlao2005(at)gmail(dot)com, Bahia, Brasil, to all happy C programmers over the world! WARNING! The links inside this document will jump to the original page on the Web, not to specific place on the book. So, don't use them to offline reading. Sorry! Preface [http://publications.gbdirect.co.uk/c_book/preface/] ! About This Book [http://publications.gbdirect.co.uk/c_book/preface/about.html] " The Success of C " [http://publications.gbdirect.co.uk/c_book/preface/the_success_of_c.html] Standards [http://publications.gbdirect.co.uk/c_book/preface/standards.html] " Hosted and Free-Standing Environments " [http://publications.gbdirect.co.uk/c_book/preface/hosted_and_free_standing.htm Typographical conventions " [http://publications.gbdirect.co.uk/c_book/preface/typographical_conventions.htm Order of topics [http://publications.gbdirect.co.uk/c_book/preface/order_of_topics " Example programs " [http://publications.gbdirect.co.uk/c_book/preface/example_programs.html] Deference to Higher Authority " [http://publications.gbdirect.co.uk/c_book/preface/higher_authority.html] Address for the Standard " [http://publications.gbdirect.co.uk/c_book/preface/c_standard.html] Chapter 1. An Introduction to C [http://publications.gbdirect.co.uk/c_book/chapter1/] ! 1.1. The form of a C program " [http://publications.gbdirect.co.uk/c_book/chapter1/form_of_a_c_program.html] 1.2. Functions [http://publications.gbdirect.co.uk/c_book/chapter1/functions.html] " 1.3. A description of Example 1.1 " [http://publications.gbdirect.co.uk/c_book/chapter1/description_of_example.html] 1.4. Some more programs " [http://publications.gbdirect.co.uk/c_book/chapter1/some_more_programs.html] 1.5. Terminology [http://publications.gbdirect.co.uk/c_book/chapter1/terminology " 1.6. Summary [http://publications.gbdirect.co.uk/c_book/chapter1/summary.html] " file://C:\CARLAO\The C Book - Table of Contents.htm 21/2/2007 The C Book - Table of Contents Página 2 de 4 1.7. Exercises [http://publications.gbdirect.co.uk/c_book/chapter1/exercises.html " Chapter 2. Variables and Arithmetic [http://publications.gbdirect.co.uk/c_book/chapter2 ! 2.1. Some fundamentals " [http://publications.gbdirect.co.uk/c_book/chapter2/fundamentals.html] 2.2. The alphabet of C " [http://publications.gbdirect.co.uk/c_book/chapter2/alphabet_of_c.html] 2.3. The Textual Structure of Programs " [http://publications.gbdirect.co.uk/c_book/chapter2/textual_program_structure.htm 2.4. Keywords and identifiers " [http://publications.gbdirect.co.uk/c_book/chapter2/keywords_and_identifiers.htm 2.5. Declaration of variables " [http://publications.gbdirect.co.uk/c_book/chapter2/variable_declaration.html] 2.6. Real types [http://publications.gbdirect.co.uk/c_book/chapter2/real_types.htm " 2.7. Integral types [http://publications.gbdirect.co.uk/c_book/chapter2/integral_typ " 2.8. Expressions and arithmetic " [http://publications.gbdirect.co.uk/c_book/chapter2/expressions_and_arithmetic.h 2.9. Constants [http://publications.gbdirect.co.uk/c_book/chapter2/constants.htm " 2.10. Summary [http://publications.gbdirect.co.uk/c_book/chapter2/summary.htm " 2.11. Exercises [http://publications.gbdirect.co.uk/c_book/chapter2/exercises.htm " Chapter 3. Control of Flow and Logical Expressions ! [http://publications.gbdirect.co.uk/c_book/chapter3/] 3.1. The Task ahead [http://publications.gbdirect.co.uk/c_book/chapter3/task_ah " 3.2. Control of flow [http://publications.gbdirect.co.uk/c_book/chapter3/flow_cont " 3.3. More logical expressions " [http://publications.gbdirect.co.uk/c_book/chapter3/logical_expressions.html] 3.4. Strange operators " [http://publications.gbdirect.co.uk/c_book/chapter3/strange_operators.html] 3.5. Summary [http://publications.gbdirect.co.uk/c_book/chapter3/summary.html] " 3.6. Exercises [http://publications.gbdirect.co.uk/c_book/chapter3/exercises.html " Chapter 4. Functions [http://publications.gbdirect.co.uk/c_book/chapter4/] ! 4.1. Changes [http://publications.gbdirect.co.uk/c_book/chapter4/changes.html] " 4.2. The type of functions " [http://publications.gbdirect.co.uk/c_book/chapter4/function_types.html] 4.3. Recursion and argument passing " [http://publications.gbdirect.co.uk/c_book/chapter4/recursion_and_argument_pas 4.4. Linkage [http://publications.gbdirect.co.uk/c_book/chapter4/linkage.html] " 4.5. Summary [http://publications.gbdirect.co.uk/c_book/chapter4/summary.html] " 4.6. Exercises [http://publications.gbdirect.co.uk/c_book/chapter4/exercises.html " Chapter 5. Arrays and Pointers [http://publications.gbdirect.co.uk/c_book/chapter5/] ! 5.1. Opening shots " [http://publications.gbdirect.co.uk/c_book/chapter5/opening_shots.html] 5.2. Arrays [http://publications.gbdirect.co.uk/c_book/chapter5/arrays.html] " 5.3. Pointers [http://publications.gbdirect.co.uk/c_book/chapter5/pointers.html] " 5.4. Character handling " [http://publications.gbdirect.co.uk/c_book/chapter5/character_handling.html] 5.5. Sizeof and storage allocation " [http://publications.gbdirect.co.uk/c_book/chapter5/sizeof_and_malloc.html] 5.6. Pointers to functions " [http://publications.gbdirect.co.uk/c_book/chapter5/function_pointers.html] 5.7. Expressions involving pointers " [http://publications.gbdirect.co.uk/c_book/chapter5/pointer_expressions.html] 5.8. Arrays, the & operator and function declarations " [http://publications.gbdirect.co.uk/c_book/chapter5/arrays_and_address_of.html] 5.9. Summary [http://publications.gbdirect.co.uk/c_book/chapter5/summary.html] " file://C:\CARLAO\The C Book - Table of Contents.htm 21/2/2007 The C Book - Table of Contents Página 3 de 4 5.10. Exercises [http://publications.gbdirect.co.uk/c_book/chapter5/exercises.htm " Chapter 6. Structured Data Types [http://publications.gbdirect.co.uk/c_book/chapter6/] ! 6.1. History [http://publications.gbdirect.co.uk/c_book/chapter6/history.html] " 6.2. Structures [http://publications.gbdirect.co.uk/c_book/chapter6/structures.htm " 6.3. Unions [http://publications.gbdirect.co.uk/c_book/chapter6/unions.html] " 6.4. Bitfields [http://publications.gbdirect.co.uk/c_book/chapter6/bitfields.html] " 6.5. Enums [http://publications.gbdirect.co.uk/c_book/chapter6/enums.html] " 6.6. Qualifiers and derived types " [http://publications.gbdirect.co.uk/c_book/chapter6/qualifiers_and_derived_types 6.7. Initialization [http://publications.gbdirect.co.uk/c_book/chapter6/initialization. " 6.8. Summary [http://publications.gbdirect.co.uk/c_book/chapter6/summary.html] " 6.9. Exercises [http://publications.gbdirect.co.uk/c_book/chapter6/exercises.html " Chapter 7. The Preprocessor [http://publications.gbdirect.co.uk/c_book/chapter7/] ! 7.1. Effect of the Standard " [http://publications.gbdirect.co.uk/c_book/chapter7/effect_of_the_standard.html] 7.2. How the preprocessor works " [http://publications.gbdirect.co.uk/c_book/chapter7/how_the_preprocessor_work 7.3. Directives [http://publications.gbdirect.co.uk/c_book/chapter7/directives.html " 7.4. Summary [http://publications.gbdirect.co.uk/c_book/chapter7/summary.html] " 7.5. Exercises [http://publications.gbdirect.co.uk/c_book/chapter7/exercises.html " Chapter 8. Specialized Areas of C [http://publications.gbdirect.co.uk/c_book/chapter8/ ! 8.1. Government Health Warning " [http://publications.gbdirect.co.uk/c_book/chapter8/health_warning.html] 8.2. Declarations, Definitions and Accessibility " [http://publications.gbdirect.co.uk/c_book/chapter8/declarations_and_definitions. 8.3. Typedef [http://publications.gbdirect.co.uk/c_book/chapter8/typedef.html] " 8.4. Const and volatile " [http://publications.gbdirect.co.uk/c_book/chapter8/const_and_volatile.html] 8.5. Sequence points " [http://publications.gbdirect.co.uk/c_book/chapter8/sequence_points.html] 8.6. Summary [http://publications.gbdirect.co.uk/c_book/chapter8/summary.html] " Chapter 9. Libraries [http://publications.gbdirect.co.uk/c_book/chapter9/] ! 9.1. Introduction [http://publications.gbdirect.co.uk/c_book/chapter9/introduction. " 9.2. Diagnostics [http://publications.gbdirect.co.uk/c_book/chapter9/diagnostics.h " 9.3. Character handling " [http://publications.gbdirect.co.uk/c_book/chapter9/character_handling.html] 9.4. Localization [http://publications.gbdirect.co.uk/c_book/chapter9/localization.h " 9.5. Limits [http://publications.gbdirect.co.uk/c_book/chapter9/limits.html] " 9.6. Mathematical functions " [http://publications.gbdirect.co.uk/c_book/chapter9/maths_functions.html] 9.7. Non-local jumps " [http://publications.gbdirect.co.uk/c_book/chapter9/nonlocal_jumps.html] 9.8. Signal handling " [http://publications.gbdirect.co.uk/c_book/chapter9/signal_handling.html] 9.9. Variable numbers of arguments " [http://publications.gbdirect.co.uk/c_book/chapter9/stdarg.html] 9.10. Input and output " [http://publications.gbdirect.co.uk/c_book/chapter9/input_and_output.html] 9.11. Formatted I/O [http://publications.gbdirect.co.uk/c_book/chapter9/formatted " 9.12. Character I/O [http://publications.gbdirect.co.uk/c_book/chapter9/character " 9.13. Unformatted I/O " [http://publications.gbdirect.co.uk/c_book/chapter9/unformatted_io.html] 9.14. Random access functions " [http://publications.gbdirect.co.uk/c_book/chapter9/random_access_io.html] file://C:\CARLAO\The C Book - Table of Contents.htm 21/2/2007 The C Book - Table of Contents Página 4 de 4 9.15. General Utilities " [http://publications.gbdirect.co.uk/c_book/chapter9/general_utilities.html] 9.16. String handling " [http://publications.gbdirect.co.uk/c_book/chapter9/string_handling.html] 9.17. Date and time " [http://publications.gbdirect.co.uk/c_book/chapter9/date_and_time.html] 9.18. Summary [http://publications.gbdirect.co.uk/c_book/chapter9/summary.htm " Chapter 10. Complete Programs in C [http://publications.gbdirect.co.uk/c_book/chapte ! 10.1. Putting it all together " [http://publications.gbdirect.co.uk/c_book/chapter10/putting_it_together.html] 10.2. Arguments to main " [http://publications.gbdirect.co.uk/c_book/chapter10/arguments_to_main.html] 10.3. Interpreting program arguments " [http://publications.gbdirect.co.uk/c_book/chapter10/interpreting_program_argum 10.4. A pattern matching program " [http://publications.gbdirect.co.uk/c_book/chapter10/pattern_matching_example. 10.5. A more ambitious example " [http://publications.gbdirect.co.uk/c_book/chapter10/ambitious_example.html] 10.6. Afterword [http://publications.gbdirect.co.uk/c_book/chapter10/afterword.ht " Answers to Exercises [http://publications.gbdirect.co.uk/c_book/answers/] ! Chapter 1 [http://publications.gbdirect.co.uk/c_book/answers/chapter_1.html] " Chapter 2 [http://publications.gbdirect.co.uk/c_book/answers/chapter_2.html] " Chapter 3 [http://publications.gbdirect.co.uk/c_book/answers/chapter_3.html] " Chapter 4 [http://publications.gbdirect.co.uk/c_book/answers/chapter_4.html] " Chapter 5 [http://publications.gbdirect.co.uk/c_book/answers/chapter_5.html] " Chapter 6 [http://publications.gbdirect.co.uk/c_book/answers/chapter_6.html] " Chapter 7 [http://publications.gbdirect.co.uk/c_book/answers/chapter_7.html] " Copyright and disclaimer [http://publications.gbdirect.co.uk/c_book/copyright.html] ! file://C:\CARLAO\The C Book - Table of Contents.htm 21/2/2007 The C Book — Preface Página 1 de 1 Preface This is a printer-friendly version of a page on the GBdirect web site. The original page may be found at http://publications.gbdirect.co.uk/c_book/preface/. About This Book [http://publications.gbdirect.co.uk/c_book/preface/about.html] ! The Success of C ! [http://publications.gbdirect.co.uk/c_book/preface/the_success_of_c.html] Standards [http://publications.gbdirect.co.uk/c_book/preface/standards.html] ! Hosted and Free-Standing Environments ! [http://publications.gbdirect.co.uk/c_book/preface/hosted_and_free_standing.html] Typographical conventions ! [http://publications.gbdirect.co.uk/c_book/preface/typographical_conventions.html] Order of topics ! [http://publications.gbdirect.co.uk/c_book/preface/order_of_topics.html] Example programs ! [http://publications.gbdirect.co.uk/c_book/preface/example_programs.html] Deference to Higher Authority ! [http://publications.gbdirect.co.uk/c_book/preface/higher_authority.html] Address for the Standard ! [http://publications.gbdirect.co.uk/c_book/preface/c_standard.html] Next chapter [http://publications.gbdirect.co.uk/c_book/chapter1/] http://publications.gbdirect.co.uk/c_book/preface/?format=pf 21/2/2007 The C Book — About This Book Página 1 de 1 About This Book This is a printer-friendly version of a page on the GBdirect web site. The original page may be found at http://publications.gbdirect.co.uk/c_book/preface/about.html. This book was written with two groups of readers in mind. Whether you are new to C and want to learn it, or already know the older version of the language but want to find out more about the new standard, we hope that you will find what follows both instructive and at times entertaining too. This is not a tutorial introduction to programming. The book is designed for programmers who already have some experience of using a modern high-level procedural programming language. As we explain later, C isn't really appropriate for complete beginners—though many have managed to use it—so the book will assume that its readers have already done battle with the notions of statements, variables, conditional execution, arrays, procedures (or subroutines) and so on. Instead of wasting your time by ploughing through tedious descriptions of how to add two numbers together and explaining that the symbol for multiplication is *, the book concentrates on the things that are special to C. In particular, it's the way that C is used which is emphasized. Those who already know C will be interested in the new Standard and how it affects existing C programs. The effect on existing programs might not at first seem to be important to newcomers, but in fact the ‘old’ and new versions of the language are an issue for the beginner too. For some years after the approval of the Standard, programmers will have to live in a world where they can easily encounter a mixture of both the new and the old language, depending on the age of the programs that they are working with. For that reason, the book highlights where the old and new features differ significantly. Some of the old features are no ornament to the language and are well worth avoiding; the Standard goes so far as to consider them obsolescent and recommends that they should not be used. For that reason they are not described in detail, but only far enough to allow a reader to understand what they mean. Anybody who intends to write programs using these old-style features should be reading a different book. This is the second edition of the book, which has been revised to refer to the final, approved version of the Standard. The first edition of the book was based on a draft of the Standard which did contain some differences from the draft that was eventually approved. During the revision we have taken the opportunity to include more summary material and an extra chapter illustrating the use of C and the Standard Library to solve a number of small problems. Chapter contents [http://publications.gbdirect.co.uk/c_book/preface/] | Next section [http://publications.gbdirect.co.uk/c_book/preface/the_success_of_c.html] http://publications.gbdirect.co.uk/c_book/preface/about.html?format=pf 21/2/2007 The C Book — The Success of C Página 1 de 2 The Success of C This is a printer-friendly version of a page on the GBdirect web site. The original page may be found at http://publications.gbdirect.co.uk/c_book/preface/the_success_of_c.html. C is a remarkable language. Designed originally by one man, Dennis Ritchie, working at AT&T Bell Laboratories in New Jersey, it has increased in use until now it may well be one of the most widely-written computer languages in the world. The success of C is due to a number of factors, none of them key, but all of them important. Perhaps the most significant of all is that C was developed by real practioners of programming and was designed for practical day-to-day use, not for show or for demonstration. Like any well-designed tool, it falls easily to the hand and feels good to use. Instead of providing constraints, checks and rigorous boundaries, it concentrates on providing you with power and on not getting in your way. Because of this, it's better for professionals than beginners. In the early stages of learning to program you need a protective environment that gives feedback on mistakes and helps you to get results quickly—programs that run, even if they don't do what you meant. C is not like that! A professional forester would use a chain-saw to cut down trees quickly, aware of the dangers of touching the blade when the machine is running; C programmers work in a similar way. Although modern C compilers do provide a limited amount of feedback when they notice something that is out of the ordinary, you almost always have the option of forcing the compiler to do what you said you wanted and to stop it from complaining. Provided that what you said you wanted was what you really did want, then you'll get the result you expected. Programming in C is like eating red meat and drinking strong rum except your arteries and liver are more likely to survive it. Not only is C popular and a powerful asset in the armoury of the serious day-to-day programmer, there are other reasons for the success of this language. It has always been associated with the UNIX operating system and has benefited from the increasing popularity of that system. Although it is not the obvious first choice for writing large commercial data processing applications, C has the great advantage of always being available on commercial UNIX implementations. UNIX is written in C, so whenever UNIX is implemented on a new type of hardware, getting a C compiler to work for that system is the first task. As a result it is almost impossible to find a UNIX system without support for C, so the software vendors who want to target the UNIX marketplace find that C is the best bet if they want to get wide coverage of the systems available. Realistically, C is the first choice for portability of software in the UNIX environment. C has also gained substantially in use and availability from the explosive expansion of the Personal Computer market. C could almost have been designed specifically for the development of software for the PC—developers get not only the readability and productivity of a high-level language, but also the power to get the most out of the PC architecture without having to resort to the use of assembly code. C is practically unique in its ability to span two levels of programming; as well as providing high-level control of flow, data structures and procedures—all of the stuff expected in a modern high-level language—it also allows systems programmers to http://publications.gbdirect.co.uk/c_book/preface/the_success_of_c.html?format=pf 21/2/2007 The C Book — The Success of C Página 2 de 2 address machine words, manipulate bits and get close to the underlying hardware if they want to. That combination of features is very desirable in the competitive PC software markeplace and an increasing number of software developers have made C their primary language as a result. Finally, the extensibility of C has contributed in no small way to its popularity. Many other languages have failed to provide the file access and general input-output features that are needed for industrial-strength applications. Traditionally, in these languages I/O is built-in and is actually understood by the compiler. A master-stroke in the design of C (and interestingly, one of the strengths of the UNIX system too) has been to take the view that if you don't know how to provide a complete solution to a generic requirement, instead of providing half a solution (which invariably pleases nobody), you should allow the users to build their own. Software designers the world over have something to learn from this! It's the approach that has been taken by C, and not only for I/O. Through the use of library functions you can extend the language in many ways to provide features that the designers didn't think of. There's proof of this in the so-called Standard I/O Library (stdio), which matured more slowly than the language, but had become a sort of standard all of its own before the Standard Committee give it official blessing. It proved that it is possible to develop a model of file I/O and associated features that is portable to many more systems than UNIX, which is where it was first wrought. Despite the ability of C to provide access to low-level hardware features, judicious style and the use of the stdio package results in highly portable programs; many of which are to be found running on top of operating systems that look very different from one another. The nice thing about this library is that if you don't like what it does, but you have the appropriate technical skills, you can usually extend it to do what you do want, or bypass it altogether. Previous section [http://publications.gbdirect.co.uk/c_book/preface/about.html] | Chapter contents [http://publications.gbdirect.co.uk/c_book/preface/] | Next section [http://publications.gbdirect.co.uk/c_book/preface/standards.html] http://publications.gbdirect.co.uk/c_book/preface/the_success_of_c.html?format=pf 21/2/2007 The C Book — Standards Página 1 de 2 Standards This is a printer-friendly version of a page on the GBdirect web site. The original page may be found at http://publications.gbdirect.co.uk/c_book/preface/standards.html. Remarkably, C achieved its success in the absence of a formal standard. Even more remarkable is that during this period of increasingly widespread use, there has never been any serious divergence of C into the number of dialects that has been the bane of, for example, BASIC. In fact, this is not so surprising. There has always been a “language reference manual”, the widely-known book written by Brian Kernighan and Dennis Ritchie, usually referred to as simply “K&R”. The C Programming Language, B.W. Kernighan and D. M. Ritchie, Prentice-Hall Englewood Cliffs, New Jersey, 1978 Further acting as a rigorous check on the expansion into numerous dialects, on UNIX systems there was only ever really one compiler for C; the so-called “Portable C Compiler”, originally written by Steve Johnson. This acted as a reference implementation for C—if the K&R reference was a bit obscure then the behaviour of the UNIX compiler was taken as the definition of the language. Despite this almost ideal situation (a reference manual and a reference implementation are extremely good ways of achieving stability at a very low cost), the increasing number of alternative implementations of C to be found in the PC world did begin to threaten the stability of the language. The X3J11 committee of the American National Standards Institute started work in the early 1980's to produce a formal standard for C. The committee took as its reference the K&R definition and began its lengthy and painstaking work. The job was to try to eliminate ambiguities, to define the undefined, to fix the most annoying deficiencies of the language and to preserve the spirit of C—all this as well as providing as much compatibility with existing practice as was possible. Fortunately, nearly all of the developers of the competing versions of C were represented on the committee, which in itself acted as a strong force for convergence right from the beginning. Development of the Standard took a long time, as standards often do. Much of the work is not just technical, although that is a very time-consuming part of the job, but also procedural. It's easy to underrate the procedural aspects of standards work, as if it somehow dilutes the purity of the technical work, but in fact it is equally important. A standard that has no agreement or consensus in the industry is unlikely to be widely adopted and could be useless or even damaging. The painstaking work of obtaining consensus among committee members is critical to the success of a practical standard, even if at times it means compromising on technical “perfection”, whatever that might be. It is a democratic process, open to http://publications.gbdirect.co.uk/c_book/preface/standards.html?format=pf 21/2/2007

Description:
This book presents an introduction to the C programming language, featuring a structured approach and aimed at professionals and students with some experience of high-level languages. Features *includes embedded summary material in bulleted form *highlights common traps and pitfalls in C programming
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.