The following outline is provided as an overview of and topical guide to C:

C is a general-purpose, procedural, compiled, and statically typed programming language. It was created by Dennis Ritchie in 1972 at Bell Labs as a successor to the B language.

What type of language is C? C can be described as all of the following:

Programming language — artificial language designed to communicate instructions to a machine, particularly a computer. Compiled language — language implemented through compilers rather than interpreters Procedural programming language — programming paradigm based on the concept of procedure calls General-purpose programming language — designed for writing software in a wide variety of application domains Statically typed programming language — type checking is performed at compile-time

History of C B programming language — precursor to C K&R C — early version described by Kernighan and Ritchie ANSI C / ISO C standards: C89/C90 C99 C11 C17 C23 — current standard

General C concepts

Callback Control flow Pointers Dynamic memory allocation Data types Enumeration File input/output Functions Header files Memory management Operators Preprocessor directives Recursion Standard streams Static variables String handling Structs Type conversion Undefined behavior Unions Variables

Issues / Limitations Constructs that behave differently in C and C++ Cyber security Undefined behavior

C Toolchain

C compilers

GCC — GNU Compiler Collection Clang — LLVM C compiler MSVC — Microsoft Visual C++ compiler (supports C) TinyCC Turbo C

C libraries

C Standard Library

The C standard library provides fundamental routines for: Input/output (stdio.h) String handling (string.h) Mathematical computations (math.h) Memory management (stdlib.h) Time and date (time.h)

Other notable libraries GLib SDL GSL libcurl OpenSSL

Notable projects written in C CPython — the reference implementation of the Python programming language Git — version control system Linux kernel, Bash, Coreutils, Autoconf and other command line utilities Lua, PHP, Perl — Scripting languages PostgreSQL — relational database systems Redis — in-memory database SQLite — embedded SQL database engine Unix — originally rewritten in C at Bell Labs Vim GNOME, MATE and Xfce — desktop environments X window system and Wayland — windowing systems Apache HTTP Server and nginx — Web servers cURL — command line web client and library HAProxy — multiprotocol load balancer and reverse proxy OpenSSH OpenSSL OpenLDAP

Example source code Articles with example C code

C publications Books about C Andrew Koenig – C Traps and Pitfalls Brian W. Kernighan – The C Programming Language Guy L. Steele Jr. – C: A Reference Manual Herbert Schildt – C, The Complete Reference Peter van der Linden – Expert C Programming: Deep C Secrets

Magazines about C C/C++ Users Journal — (historical publication)

C programmers John Carmack – game programmer, known for Doom and Quake. Brian Kernighan — wrote The C Programming Language book Rob Pike – worked on Unix and Plan 9, contributed to C and its ecosystem. Dennis Ritchie — created the C programming language Richard Stallman – founder of the GNU Project Tim Sweeney – founder of Epic Games and creator of Unreal Engine Ken Thompson — Unix Linus Torvalds — Linux

C dialects Cyclone — safe variant Embedded C GNU C — features specific to GCC K&R C Microsoft C — Microsoft-specific extensions Objective-C — object-oriented extension of C

C learning resources

Codecademy – interactive C programming lessons GeeksforGeeks – tutorials, coding examples, and interactive programming for C concepts and data structures Learn-C.org – free interactive C tutorial for beginners CProgramming.com Tutorial – tutorials, examples, and best practices for learning C W3Schools – beginner-friendly C tutorials Wikibooks C Programming – free open-content textbook

Competitive programming Codeforces – an online platform for programming contests that supports C submissions Codewars – gamified coding challenges HackerRank – competitive programming and interview preparation site with C challenges LeetCode – online judge and problem-solving platform

See also Compatibility of C and C++ List of software programming journals List of C-family programming languages Outline of computer programming Outline of software Outline of software engineering

Outlines of other programming languages

Outline of the C sharp programming language Outline of the C++ programming language Outline of the Java programming language Outline of the JavaScript programming language Outline of the Perl programming language Outline of the Python programming language Outline of the Rust programming language

References

External links

ISO C standard information C reference on cppreference.com