C-Kurzreferenz
Die C-Kurzreferenz gibt eine kompakte tabellarische Übersicht der wichtigsten C-Befehle mit Syntax, Beschreibung und Beispiel. C-Schlüsselwörter sind grün und Konzepte grau markiert.
Befehl | Syntax | Beschreibung | Beispiel |
---|---|---|---|
1 Programmstruktur
Quellcode *.c Header *.h Anweisungen Kommentare main #include #define |
|
Eine C-Quellcode-Datei besteht aus Anweisungen und Kommentaren. Am Anfang stehen die #include- und #define-Direktiven, gefolgt von der main-Funktion und weiteren Funktionen. Die main-Funktion ist der Einstiegspunkt, jedes Programm hat genau eine. Mit #include werden Programmbibliotheken eingebunden. |
|
1-1 Makros
#Direktive #define |
|
Die Präprozessor-Direktive #define erstellt ein Makro: sie ersetzt im Quellcode jedes Vorkommen des Namens mit dem angegebenen Ausdruck oder Wert. |
|
1-2 Variablen
Datentyp int float double char |
|
Durch die Variablen-Deklaration wird einen benannter Speicherplatz angelegt, in dem Werte des angegebenen Datentyps abgelegt werden können. Häufig verwendete Datentypen sind: int, float, double, und char. |
|
1-3 Konstante
const |
const datentyp myconst; |
Die Definition einer Konstanten erfolgt mit Hilfe des Schlüsselwortes const, der Datentyp muss angegeben werden. |
|
1-4 Operatoren
Arithmetisch +, -, *, / Modulo % Inkrementierung ++ Logisch && || ! Vergleich >, >=, <, <= == != |
|
Berechnungen werden durchgeführt, indem Variablen über Operatoren
zu Ausdrücken verknüpft werden, z.B.
(a + b ) * c / d. Man unterscheidet zwischen arithmetischen, logischen, binären und Vergleichsoperatoren. Die Auswertungsreihenfolge wird durch eine festgelegte Priorität der Operatoren und durch runde Klammern gesteuert. |
|
2 Eingabe |
Syntax | Beschreibung | Beispiel |
2-1 Eingabe über Konsole
scanf Platzhalter %d,%f,%lf %c,%s |
|
Die scanf-Funktion erhält als ersten Parameter eine formatierende Zeichenkette, z.B. "%d %lf", gefolgt von einer Liste von Variablen, deren Anzahl und Datentyp zu den Formatbeschreibern passen muss. Jeder Variablen muss ein &-Zeichen vorangestellt werden, das die Adresse der Variablen bezeichnet. |
|
3 Ausgabe |
Syntax | Beschreibung | Beispiel |
3-1 Ausgabe auf die Konsole
printf Platzhalter %d,%f,%lf %c,%s Steuerzeichen \n |
|
Die printf-Funktion für die Ausgabe auf die Konsole hat als ersten Parameter eine formatierende Zeichenkette, gefolgt von einer Liste von Variablen. Die formatierende Zeichenkette enthält Text, der einfach ausgegeben wird, und Formatzeichen %d, %lf, %c, %s etc., an deren Stelle die Werte der Variablen aus der Variablenliste eingesetzt werden. |
|
3-2 Ausgabe in Dateien
fprintf fopen fclose %d,%f,%lf %c,%s \n |
|
Der Zugriff auf eine Datei geschieht mit Hilfe des Zeigers FILE *fp und der Funktionen fopen (Datei öffnen) und fclose (Datei schließen). Nachdem eine Datei schreibend geöffnet wurde, kann sie mit Hilfe der Funktion fprintf() beschrieben werden. Der Aufruf von fprintf() funktioniert ähnlich wie printf(), mit dem Unterschied, dass man als erstes Argument den Datei-Zeiger fp übergibt. |
|
4 Verzweigungen |
Syntax | Beschreibung | Beispiel |
4-1 Einfache Verzweigung
if else |
|
Eine bedingte Verzweigung legt fest, welcher von zwei Anweisungsblöcken,
abhängig von einer Bedingung, ausgeführt wird.
Der else-Teil ist optional. |
|
4-2 Mehrfache Verzweigung
if else if else |
|
Eine mehrfache Verzweigung prüft die angegebenen Bedingungen von oben nach unten,
führt die Anweisungen beim ersten Zutreffen aus, und springt danach in die erste Anweisung nach
der Verzweigung:
Wenn die Bedingung bedingung1 wahr ist, führe Anweisungen anweisungen1 aus. Sonst wenn Bedingung bedingung2 wahr ist, führe Anweisung anweisungen2 aus. . . . Sonst führe die Default-Anweisung aus. |
|
4-3 Fallunterscheidung
switch case break |
|
Fallunterscheidung: Ein Ausdruck bzw. der Wert einer Variablen wird mit verschiedenen Werten verglichen. Bei Übereinstimmung wird die entsprechende Anweisung ausgeführt. Die break-Anweisung bewirkt, dass der case-Zweig sofort verlassen wird. Wenn break in einem Zweig weggelassen wird, werden auch die folgenden case-Zweige ausgeführt, bis ein break gefunden wird, oder die switch-Anweisung zu Ende ist. Der optionale default-Zweig greift dann, wenn es keine Übereinstimmung gibt. |
|
5 Schleifen |
Syntax | Beschreibung | Beispiel |
5-1 while-Schleife
while |
|
Mit der while-Schleife werden Anweisungen ausgeführt, solange eine Bedingung wahr ist. |
|
5-2 for-Schleife
for |
|
Mit Hilfe der for-Schleife werden Anweisungen wiederholt ausgeführt. Die Anzahl der Ausführungen wird durch Zählvariablen gesteuert, für die man Startwert, Endwert und Schrittweite festlegt. |
|
5-3 Schleifenabbruch
break |
|
Eine Schleife kann mit break sofort verlassen werden. |
|
5-4 Schleifenschritt überspringen
continue |
|
Einzelne Schleifenschritte in einer while-oder for-Schleife können mit continue übersprungen werden. |
|
6 Funktionen |
Syntax | Beschreibung | Beispiel |
6-1 Funktion ohne Rückgabewert
void Funktionsdefinition Funktionsprototyp Funktionsaufruf |
|
Eine Funktion mit Rückgabetyp void (leerem Rückgabetyp) ist eine benannte Gruppierung von Anweisungen und besteht aus:
(1) Funktionsprototyp: deklariert Rückgabetyp, Name und Parameterliste. (2) Funktionsdefinition: enthält die Anweisungen. Die Funktion wird einmal definiert und kann mit passenden Argumenten beliebig oft aufgerufen werden. Die Funktionsaufrufe erfolgen durch Angabe des Funktionnamens und der Argumente, die in Anzahl, Reihenfolge und Datentyp mit den Parametern übereinstimmen müssen. |
|
6-2 Funktion mit Rückgabewert
return
Funktionsdefinition
Funktionsprototyp
Funktionsaufruf
|
|
Eine Funktion mit nicht-leerem Rückgabetyp ist eine benannte Gruppierung von Anweisungen,
die einen Rückgabewert berechnet, der in der aufrufenden Funktion weiter verwendet werden kann.
Der Rückgabewert wird mit Hilfe der Anweisung return zurückgegeben. Die Funktionsaufrufe erfolgen durch Angabe des Funktionnamens und der Argumente, die in Anzahl, Reihenfolge und Datentyp mit den Parametern übereinstimmen müssen. |
|
7 Arrays |
Syntax | Beschreibung | Beispiel |
7-1 Eindimensionale Arrays
Element Index Größe |
|
Array: eine statische Datenstruktur, speichert Datenobjekte desselben Datentyps.
Die Größe eine 1D-Arrays muss als Konstante angegeben werden.
Ein einzelnes Datenobjekt wird Element des Arrays genannt. Die Position einer Elementes wird über einen Index angegeben, der bei 0 anfängt. |
|
7-2 Zweidimensionale Arrays
Zeilen Spalten |
|
Bei der Deklaration eines 2D-Arrays wird der benötigte Speicherbereich durch zwei Konstanten festgelegt:
die maximale Anzahl Zeilen (hier mit M bezeichnet) und maximale Anzahl Spalten (hier mit N bezeichnet).
Die Zuweisung kann gleichzeitig mit der Deklaration durch explizite Aufzählung der Elemente erfolgen, oder nach der Deklaration durch Zuweisung von Werten an die einzelnen Elemente. |
|
8 Zeiger / Pointer |
Syntax | Beschreibung | Beispiel |
8-1 Pointer / Zeiger verwenden
Pointer Adresse |
|
Bei der Deklaration einer Variablen n legt der Compiler einen Speicherplatz der Größe x (1, 4, oder 8) Byte an
und vergibt dabei eine Adresse (z.B. 0x46fc80), unter der die Variable gefunden werden kann.
Ein Zeiger / Pointer ist eine Referenzvariable, die die Adresse einer anderen Variablen speichern kann und z.B.für dynamische Speicherallokation, Textbearbeitung oder Referenzparameter in Funktionen verwendet wird. |
Wert der Variablen a wird mittels Pointer z geändert.
Array arr wird mittels Pointer p durchlaufen.
|
8-2 Pointer-Anwendung: Dynamische Speicherallokation
malloc calloc free |
|
Dynamische Speicherallokation bedeutet, dass die Größe des reservierten Speicherbereichs verändert und freigegeben werden kann. Die C-Standardbibliothek <stdlib.h> stellt für die dynamische Speicherallokation die Funktionen malloc, calloc(), realloc() und free() zur Verfügung, mit denen man einen Speicherbereich für eine Anzahl von Daten desselben Datentyps reservieren bzw. freigeben kann. |
|
Befehl | Syntax | Beschreibung | Beispiel |
Tools, Quellen und weiterführende Links
- Visual Studio Community Edition: Für die Entwicklung von C-Programmen. Visual Studio unterstützt C-Programmierung indirekt über C++ und die Vollversion wird in vielen Unternehmen als Entwicklungsumgebung eingesetzt.
- yED Graph Editor: Für die Entwicklung von Flussdiagrammen bzw. Programmablaufplänen.
- Jürgen Wolf, C von A bis Z: openbook.rheinwerk-verlag.de/c_von_a_bis_z/, 2020.
- Thomas Theis: Einstieg in C. Für Programmiereinsteiger geeignet, Galileo Press, 2014.
- Manfred Daussman, C als erste Programmiersprache: Vom Einsteiger zum Fortgeschrittenen. Vieweg, 2010.
- Axel Böttcher, Franz Kneißl. Informatik für Ingenieure: Grundlagen und Programmierung in C. Oldenbourg Verlag, 1999.
- Brian Kernighan, Dennis Ritchie, The C programming language. Prentice-Hall, 2010.
- Visual Studio C Language Reference, https://docs.microsoft.com/en-us/cpp/c-language