Seit 1978 galt hingegen das Buch The C Programming Language als informeller De-facto-Standard, welches Brian W. Kernighan und Dennis Ritchie im selben Jahr veröffentlicht hatten. Das Normungsgremium von C ist die ISO/IEC – Arbeitsgruppe JTC1/SC22/WG14 – C, kurz als WG14 bekannt. Die nationalen Standardisierungsorganisationen übernehmen die Veröffentlichungen des internationalen Standards in an ihre Bedürfnisse angepasster Form. C ist eine imperative und prozedurale Programmiersprache, die der Informatiker Dennis Ritchie in den frühen 1970er Jahren an den Bell Laboratories entwickelte. Seitdem ist sie eine der am weitesten verbreiteten Programmiersprachen.
Auf diese Weise können Variablen verschiedenen Datentyps zusammengefasst werden. Der Datentyp void wird im C-Standard als „unvollständiger Typ“ bezeichnet. Verwendet wird void erstens, wenn eine Funktion keinen Wert zurückgeben soll, zweitens wenn explizit eine leere Parameterliste für eine Funktion verlangt wird und drittens, wenn ein Zeiger auf „Objekte beliebigen Typs“ zeigen soll. Zum Speichern eines Zeichens verwendet man in C üblicherweise den Datentyp Character, geschrieben als char.
Für den Aufruf beinhaltet der Delegat auch den Verweis auf das zu den Methoden gehörende Objekt. Ein Aufruf eines Delegaten ruft also gezielt eine Methode auf, der implizit ein Objektzeiger als Parameter übergeben wird. Außerdem müssen Delegaten typensicher deklariert werden, was zur Folge hat, dass Inkompatibilitäten der Methodensignaturen zwischen aufrufendem Delegat und der aufzurufenden Methode schon während der Kompilierung bemerkt werden. Reguläre Ausdrücke, verschiedene intelligente Zeiger, ungeordnete assoziative Container, eine Zufallszahlenbibliothek, Hilfsmittel für die C++-Metaprogrammierung, Tupel sowie numerische und mathematische Bibliotheken enthalten. Die meisten dieser Erweiterungen stammten aus der Boost-Bibliothek, woraus sie mit minimalen Änderungen übernommen wurden.
Datentypen
Wie in anderen Programmiersprachen dient ein Enum in C dazu, mehrere konstante Werte zu einem Typ zu kombinieren. C wurde allerdings als Programmiersprache und nicht als Zielsprache für Compiler entworfen. K&R C erweiterte die Sprache um neue Schlüsselwörter wie long oder unsigned und führte die von Mike Lesk entwickelte I/O-Standardbibliothek und auf Empfehlung von Alan Snyder den Präprozessor ein. Sie wird zur System- und Anwendungsprogrammierung eingesetzt. Die grundlegenden Programme aller Unix-Systeme und die Systemkernel vieler Betriebssysteme sind in C programmiert. Zahlreiche Sprachen, wie C++, Objective-C, C#, D, Java, JavaScript, LSL, PHP, Vala oder Perl, orientieren sich an der Syntax und anderen Eigenschaften von C.
C unterstützt damit wesentlich die Portierbarkeit von Programmen, sofern der Programmierer auf Assemblerteile im Quelltext und/oder hardwarespezifische C-Konstrukte verzichten kann. In der Mikrocontroller-Programmierung ist C die mit Abstand am häufigsten verwendete Hochsprache. Undefiniertes Verhalten ist nach der Definition des C-Standards «Verhalten bei Verwendung eines nicht portablen oder fehlerhaften Programmkonstrukts oder von fehlerhaften Daten, an die diese internationale Norm keine Anforderungen stellt». Dies kann beispielsweise die Dereferenzierung eines Nullzeigers, die Division durch Null, der Zugriff auf Variablen durch Zeiger eines falschen Typs oder ein Überlauf bei vorzeichenbehafteten Ganzzahlen sein. Außer der main-Funktion müssen in einem C-Programm keine weiteren Funktionen enthalten sein. Sollen andere Funktionen ausgeführt werden, müssen sie in der main-Funktion aufgerufen werden.
Eine der wesentlichen Erweiterungen der Standardbibliothek kam später durch die Integration großer Teile der bei Hewlett-Packard entwickelten Standard Template Library hinzu. Auf die Idee für eine neue Programmiersprache kam Stroustrup durch Erfahrungen mit der Programmiersprache Simula während seiner Doktorarbeit an der Cambridge University. Simula erschien zwar geeignet für den Einsatz in großen Software-Projekten, die Struktur der Sprache erschwerte aber die Erstellung hocheffizienter Programme. Demgegenüber ließen sich effiziente Programme zwar mit der Sprache BCPL schreiben, für große Projekte war BCPL aber wiederum ungeeignet. Generische Techniken ergänzen die objektorientierte Programmierung um Typparameter und erhöhen so die Wiederverwertbarkeit einmal kodierter Algorithmen. Die generischen Java-Erweiterungen sind jedoch lediglich auf Klassen, nicht aber auf primitive Typen oder Datenkonstanten anwendbar.
Implementierung Anderer Sprachen
Beispielsweise dient die Funktion printf zur Ausgabe von Text. Sie kann verwendet werden, nachdem man die Header-Datei stdio.h eingebunden hat. Ab der Version 2.0 von C#, die mit .Net-Framework 2.0 freigegeben wurde, unterstützt C# neben generischen Typen auch anonyme Methoden, Generatoren und partielle Klassen. Generische Typen, Iteratoren und partielle Klassen sind Bestandteil des .NET-Frameworks 2.0 und stehen somit auch anderen .NET-Programmiersprachen wie beispielsweise Visual Basic .NET zur Verfügung. 1985 erschien die erste Version von C++, die eine wichtige Referenzversion darstellte, da die Sprache damals noch nicht standardisiert war.
Eine Datei bildet eine Übersetzungseinheit; intern benötigte Funktionen und Variablen können so vor anderen Dateien verborgen werden. Die Bekanntgabe der öffentlichen Funktionsschnittstellen erfolgt mit so genannten Header-Dateien. Die Standardbibliothek ist aufgeteilt in mehrere Standard-Header-Dateien, die hinzugelinkte Bibliothek ist jedoch oft eine einzige große Datei. Beim Benennen von eigenen Variablen, Konstanten, Funktionen und Datentypen muss man sich an einige Regeln zur Namensgebung halten. Erstens muss das erste Zeichen eines Bezeichners ein Buchstabe oder Unterstrich sein. Zweitens dürfen die folgenden Zeichen nur die Buchstaben A bis Z und a bis z, Ziffern und der Unterstrich sein.
Kreisstraßen werden in Deutschland mit vorangestelltem K und einer Nummer gekennzeichnet. In das griechische Alphabet wurde das Kaph als Kappa übernommen und hatte ebenfalls den Lautwert . Zu Beginn zeigte die Öffnung des K noch nach links, nachdem die Griechen die Schreibrichtung auf von-links-nach-rechts wechselten, wurde der Buchstabe gespiegelt. ]) ist der zehnte Buchstabe des klassischen und der elfte Buchstabe des modernen lateinischen Alphabets.
Das Ç wird in den Orthografien einiger Sprachen als Variante des C verwendet, wo dieses vor a, o und u nicht als , sondern als ausgesprochen werden soll. Im Französischen (z. B. in commençons vs. encore), im Portugiesischen (z. B. in açúcar oder z. B. in dança), im Katalanischen (z. B. in feliç), im Niederländischen (z. B. in Curaçao vs. Cacao). Zum Zeitpunkt der Einführung des Standards und auch noch vergleichsweise lange darüber hinaus unterstützten viele gängige Compiler diesen nicht vollständig bzw. Besonders starke Einschränkungen zeigte diesbezüglich zum Beispiel Microsoft mit Visual C++ 2012. Mit Visual C++ 2015 sind mittlerweile jedoch nahezu alle wichtigen größeren Spracherweiterungen berücksichtigt worden.
Die vorrangigen Ziele für die Weiterentwicklung von C++ waren Verbesserungen im Hinblick auf die Systemprogrammierung sowie zur Erstellung von Programmbibliotheken. Außerdem sollte die Erlernbarkeit der Sprache für Anfänger verbessert werden. Im Zuge der Weiterentwicklung der Sprache C++ entstand auch eine gegenüber C erweiterte Standardbibliothek. Erste Ergänzung war die Stream-I/O-Bibliothek, die Ersatz für traditionelle C-Funktionen wie zum Beispiel printf() und scanf() bietet.
Weitere Entwicklung
Der umgekehrte Weg ist oft ebenfalls möglich und kann verwendet werden, um in C geschriebene Programme mit einer anderen Sprache zu erweitern (z. B. mod perl). Auch Anwendungssoftware wird oft in C erstellt, wobei die Relevanz der Sprache hier hinter andere zurückfiel, das ist besonders deutlich auf mobilen Plattformen. Viele Programmierschnittstellen für Anwendungsprogramme und Betriebssystem-APIs werden in Form von C-Schnittstellen implementiert, zum Beispiel Win32. Handfläche Phönizisches KaphGriechisches KappaEtruskisches KLateinisches KIn der protosinaitischen Schrift stellt der Buchstabe eine Handfläche dar. Im phönizischen Alphabet war der Buchstabe schon stark stilisiert.
Der Buchstabe erhielt den Namen Gimel und hatte den Lautwert . Zu Beginn wurde das Gamma in einer Form geschrieben, die wie ein Dach aussah (ähnlich dem späteren Lambda). Bis zur klassischen Zeit entwickelte sich das Gamma zu Γ weiter. Mit dafür verantwortlich war wahrscheinlich neben dem Wechsel der Schreibrichtung von rechts-nach-links auf links-nach-rechts auch der notwendige Wechsel der Schreibwerkzeuge zum Beschreiben von organischen Stoffen. C enthält einige sicherheitskritische Funktionen; so überschreibt zum Beispiel gets(), in alten Standards eine Funktion der Standardbibliothek, fremde Speicherbereiche (Pufferüberlauf), wenn es auf eine unpassende Eingabe stößt.
Außerdem waren sämtliche Bibliothekserweiterungen der 1999 überarbeiteten Programmiersprache C in einer an C++ angepassten Form enthalten. Die Sprache C++ verwendet nur etwa 60 Schlüsselwörter („Sprachkern“), manche werden in verschiedenen Kontexten mehrfach verwendet. Je nach Einsatzgebiet kommen weitere Bibliotheken und Frameworks dazu. C++ legt einen Schwerpunkt auf die Sprachmittel zur Entwicklung von Bibliotheken. Dadurch favorisiert es verallgemeinerte Mechanismen für typische Problemstellungen und besitzt kaum in die Sprache integrierte Einzellösungen.
Seit C95 sind auch Zeichen aus dem Universal Coded Character Set in Bezeichnern erlaubt, sofern die Implementierung es unterstützt. Die erlaubten Zeichen sind in Anhang D des ISO-C-Standards aufgelistet. Vereinfacht gesagt, sind es all jene Zeichen, die in irgendeiner Sprache als Buchstabe oder buchstabenähnliches Zeichen Verwendung finden. C wird oft für die Erstellung von Anbindungen (engl. bindings) genutzt . Diese Anbindungen erlauben es Programmen, die in einer anderen Hochsprache geschrieben sind, Funktionen aufzurufen, die in C implementiert wurden.