C Programming Language

Other Free Books!
Free Computer Books Alliance
Agile Programming
3D Rendering
3D Graphics Libraries
Remember that these titles are copyright © the author or the publisher. The author / publisher has generously allowed them to be available for free online. Please respect the terms and conditions of the copyright.

If you know of a quality book that we should include on this page, please let me know.


Object-Orientated Programming with ANSI-C Axel-Tobias Schreiner
C - Committee Draft of ISO9899:TC2 ISO/IEC
C - The ISO Standard - Rationale ISO/IEC
C - Elements of Style Steve Oualline
Numerical Recipes in C - The Art of Scientific Computing William H. Press
The C Book Mike Banahan, Declan Brady, Mark Doran
Writing Bug Free C Code Jerry Jongerius
The New C Standard - A Cultural and Economic Commentary Derek M. Jones

Non-Book Resources
C and C++ Style Guides Offers access to many style guides for code written in C and C++, as well as some discussion about the value and utility of such style guides.
Hermetic Systems C and C++ Programming Articles and Tutorials
History of Computing Foundation A non-profit foundation dedicated to preserving the history of computers in the widest meaning of the word.

C is a general-purpose, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system. It has since spread to many other platforms, and is now one of the most widely used programming languages. C has also greatly influenced many other popular languages, especially C++, which was originally designed as an enhancement to C. It is the most commonly used programming language for writing system software, though it is also widely used for writing applications.

C is a procedural programming paradigm, with facilities for structured programming. It allows lexical variable scope and recursion. Its static type system prevents many meaningless operations. Parameters of C functions are always passed by value. Pass-by-reference is achieved in C by explicitly passing pointer values. Heterogeneous aggregate data types (the struct in C) allow related data elements to be combined and manipulated as a unit.

C has a small set (around 30) of reserved keywords.

C also has the following specific properties:

  • Weak typing — for instance, characters can be used as integers (similar to assembly)
  • Low-level access to computer memory via machine addresses and typed pointers
  • Function pointers allow for a rudimentary form of closures and runtime polymorphism
  • Array indexing as a secondary notion, defined in terms of pointer arithmetic
  • A standardized C preprocessor for macro definition, source code file inclusion, conditional compilation, etc.
  • A simple, small core language, with functionality such as mathematical functions and file handling delegated to library routines
  • Free-format source text, using semicolon as a statement terminator (not a delimiter as in Pascal)
  • A large number of operators constructed from nonalphanumeric symbols, for example { ... } rather than Algol's begin ... end
  • Use of && and || for logical "and" and "or", which
  • are syntactically distinct from C's bit-wise operations (& and |) — C's predecessor B used & and | for both meanings
  • never evaluate the right operand if the result can be determined from the left alone ("short-circuit" or Minimal evaluation)
  • Follows FORTRAN's decision to use a single equal-sign to denote assignment, using == as the operator for comparing for equality (inherited from B)