Unformatted text preview:

Learn C Programming Language Become A Complete C Programmer By Virender Singh Disclaimer Copyright Anyone Is Free To Distribute This Book Digitally And For Commercial Purpose Contents Contents iii Preface v Preface to the Fourth Edition v Preface to the Third Edition ix Preface to the Second Edition xi Preface to the First Edition xii Part I Introductory Material 1 Notes to the Reader 3 2 A Tour of C The Basics 37 3 A Tour of C Abstraction Mechanisms 59 4 A Tour of C Containers and Algorithms 87 5 A Tour of C Concurrency and Utilities 111 Part II Basic Facilities 133 6 Types and Declarations 135 7 Pointers Arrays and References 171 8 Structures Unions and Enumerations 201 9 Statements 225 10 Expressions 241 iv Contents 11 Select Operations 273 12 Functions 305 13 Exception Handling 343 14 Namespaces 389 15 Source Files and Programs 419 Part III Abstraction Mechanisms 447 16 Classes 449 17 Construction Cleanup Copy and Move 481 18 Overloading 527 19 Special Operators 549 20 Derived Classes 577 21 Class Hierarchies 613 22 RunTime Type Information 641 23 Templates 665 24 Generic Programming 699 25 Specialization 721 26 Instantiation 741 27 Templates and Hierarchies 759 28 Metaprogramming 779 29 A Matrix Design 827 Part IV The Standard Library 857 30 Standard Library Summary 859 31 STL Containers 885 32 STL Algorithms 927 33 STL Iterators 953 34 Memory and Resources 973 35 Utilities 1009 36 Strings 1033 37 Regular Expressions 1051 38 I O Streams 1073 39 Locales 1109 40 Numerics 1159 41 Concurrency 1191 42 Threads and Tasks 1209 43 The C Standard Library 1253 44 Compatibility 1267 Index 1281 Preface All problems in computer science can be solved by another level of indirection except for the problem of too many layers of indirection David J Wheeler C feels like a new language That is I can express my ideas more clearly more simply and more directly in C 11 than I could in C 98 Furthermore the resulting programs are better checked by the compiler and run faster In this book I aim for completeness I describe every language feature and standardlibrary component that a professional programmer is likely to need For each I provide Rationale What kinds of problems is it designed to help solve What principles underlie the design What are the fundamental limitations Specification What is its definition The level of detail is chosen for the expert programmer the aspiring language lawyer can follow the many references to the ISO standard Examples How can it be used well by itself and in combination with other features What are the key techniques and idioms What are the implications for maintainability and performance The use of C has changed dramatically over the years and so has the language itself From the point of view of a programmer most of the changes have been improvements The current ISO standard C ISO IEC 14882 2011 usually called C 11 is simply a far better tool for writing quality software than were previous versions How is it a better tool What kinds of programming styles and techniques does modern C support What language and standardlibrary features support those techniques What are the basic building blocks of elegant correct maintainable and efficient C code Those are the key questions answered by this book Many answers are not the same as you would find with 1985 1995 or 2005 vintage C progress happens C is a general purpose programming language emphasizing the design and use of type rich lightweight abstractions It is particularly suited for resource constrained applications such as those found in software infrastructures C rewards the programmer who takes the time to master vi Preface techniques for writing quality code C is a language for someone who takes the task of programming seriously Our civilization depends critically on software it had better be quality software There are billions of lines of C deployed This puts a premium on stability so 1985 and 1995 C code still works and will continue to work for decades However for all applications you can do better with modern C if you stick to older styles you will be writing lower quality and worse performing code The emphasis on stability also implies that standards conforming code you write today will still work a couple of decades from now All code in this book conforms to the 2011 ISO C standard This book is aimed at three audiences C programmers who want to know what the latest ISO C standard has to offer C programmers who wonder what C provides beyond C and People with a background in application languages such as Java C Python and Ruby looking for something closer to the machine something more flexible something offering better compiletime checking or something offering better performance Naturally these three groups are not disjoint a professional software developer masters more than just one programming language This book assumes that its readers are programmers If you ask What s a for loop or What s a compiler then this book is not yet for you instead I recommend my Programming Principles and Practice Using C to get started with programming and C Furthermore I assume that readers have some maturity as software developers If you ask Why bother testing or say All languages are basically the same just show me the syntax or are confident that there is a single language that is ideal for every task this is not the book for you What features does C 11 offer over and above C 98 A machine model suitable for modern computers with lots of concurrency Language and standardlibrary facilities for doing systemslevel concurrent programming e g using multicores Regular expression handling resource management pointers random numbers improved containers including hash tables and more General and uniform initialization a simpler for statement move semantics basic Unicode support lambdas general constant expressions control over class defaults variadic templates userdefined literals and more Please remember that those libraries and language features exist to support programming techniques for developing quality software They are meant to be used in combination as bricks in a building set rather than to be used individually in relative isolation to solve a specific problem A computer is a universal machine and C serves it in that capacity In particular C s design aims to be sufficiently flexible and general to cope with future problems undreamed of by its designers vii Acknowledgments In addition to the people mentioned in the


View Full Document

Anna CS 104 - Learn C Programming Language

Course: Cs 104-
Pages: 1859
Documents in this Course
Load more
Download Learn C Programming Language
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Learn C Programming Language and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Learn C Programming Language and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?