C is a general-purpose computer programming language used for operating systems, games, and other high performance work and is clearly distinct from C++. It was developed in 1972 by Dennis Ritchie for use with the Unix operating system.
C (pronounced "See", like the letter C) is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the UNIX operating system. Its design provides constructs that map efficiently to typical machine instructions, and, therefore, it found lasting use in applications that had formerly been coded in assembly language. It is a highly efficient procedural oriented programming language and has emphasis on functions, whereas modern object-oriented programming languages have emphasis on data.
C was designed for implementing system software, but is also widely used for developing portable application software.
C is one of the most widely used programming languages of all time and there are very few computer architectures for which a C compiler does not exist. C has greatly influenced many other popular programming languages, most notably c++, which began as an extension to C.
Design
C is an imperative (procedural) systems implementation language. It was designed to be compiled using a relatively straightforward compiler, to provide low-level access to memory, to provide language constructs that map efficiently to machine instructions, and to require minimal runtime support. C was therefore useful for many applications that had formerly been coded in assembly language.
Despite its low-level capabilities, the language was designed to encourage cross-platform programming. A standards-compliant and portably written C program can be compiled for a very wide variety of computer platforms and operating systems with few changes to its source code. The language has become available on a very wide range of platforms, from embedded micro-controllers to supercomputers.
Is it C, C++ or both?
This tag is for questions related to C, not C++. In some cases, you may be working with both and applying both tags is entirely appropriate. However, please refrain from using both tags in an effort to help your question reach a wider audience. After all, C++ answers won't help you solve the problem in C, and good C answers often do not describe the best approach in C++.
Important notes that may save you time
- The comp.lang.c FAQ has answers to many frequently asked C questions. For example, see The Clockwise/Spiral Rule for parsing C declarations.
Definitive Book Guide
The following list of books has been compiled by c users as a definitive list of quality references for all levels of C programmer. If you are looking to learn or improve your C, you may find some of the following texts highly useful.
Reference Style - All Levels
- The C Programming Language (Second edition) - Brian W. Kernighan and Dennis M. Ritchie
- C: A Reference Manual - Samuel P. Harbison and Guy R. Steele
- C Pocket Reference (O'Reilly) - Peter Prinz, Ulla Kirch-Prinz
- C - Traps and Pitfalls - Andrew R. Koenig (Bell Labs)
Beginner
- Programming in C (4th Edition) - Stephen Kochan
- C Primer Plus - Stephen Prata
- C Programming: A Modern Approach - K. N. King
- A Book on C - Al Kelly/Ira Pohl
- Learn C The Hard Way - Zed Shaw
- The C book - Mike Banahan, Declan Brady and Mark Doran
Intermediate
- Object-oriented Programming with ANSI-C - Axel-Tobias Schreiner
- C Interfaces and Implementations - David R. Hanson
- The C Puzzle Book - Alan R. Feuer
- The Standard C Library - P.J. Plauger
- Pointers on C - Kenneth Reek
Above Intermediate
- Expert C Programming: Deep C Secrets - Peter van der Linden
- C Traps and Pitfalls - Andrew Koenig
- Advanced C Programming by Example - John W. Perry
Free C Programming Books
- Beej's Guide to Network Programming
- The C book
- Essential C
- Learn C the hard way
- The new C standard - an annotated reference
- Object Oriented Programming in C (PDF)
Chat Room
Chat about C with Stack Overflow users