C
C
Historisches
Warum C?
Warum C?
- C ist klein und einfach
- für praktische Zwecke entworfen
- C ist Sprache für systemnahe Programmierung
- extrem weit verbreitet bzw. etabliert
- C-Syntax ist Grundlage für viele weitere Programmiersprachen
- Grundlage für viele Vorlesungen
- C ist sehr schnell im Vergleich zu andere Programmiersprachen wie z.B. Python
Glossar
Glossar C
| Befehl | Bedeutung |
|---|---|
| int | |
| main() | |
| printf | |
| while | |
| # include | |
| // | |
| \n | new line |
| int: Ganze Zahl ("integer") |
- Erlaubt das Speichern eines Integer (ganzahligen Wertes in einer Variable)
- typischerweise 32 Bit
- Wertebereich: -2.147.483.648 (
) bis 2.147.483.647 ( ) oder auch INT_MIN bis INT_MAX
printf: Formatierte Ausgabe in C mittels: printf(fmt, args) - printf() gibt die Parameter args unter Kontrolle des sogenannten Formatstrings fmt aus
- Der Formatstring fmt ist eine Zeichenkette mit Platzhaltern
- %d Integer int
- %c Einzelzeichen char
char: Zeichen ("character") - Erlaubt das Speichern eines Zeichens
- Typischer Weise: 8 Bit
- "Wertebereich": -128 bis 127
- a = 97
Ausgaben: Formatzeichen: Format Specifier
| Format Specifier | Beschreibung | Datentyp |
|---|---|---|
| %c | Einzelzeichen | char |
| %d | Integer | int |
| %u | Unsigned Integer | unsigned int |
| %lu | Unsigned Long | long |
| %ld | Integer | long int |
| %lld | Integer | long long int |
| %f | Gleitkommazahl | float |
| %lf | Gleitkommazahl | double |
| %s | Zeichenkette/String | char * |
Ausgaben: Sonderzeichen
\n //Newline, Zeilensrung
\t //Tabulator
\0 //EOS - Endezeichen in String
\' //einfaches Anführungszeichen'
\" //doppeltest Anführungszeichen "
%% //Prozentzeichen %
\\ //Backslash \
#define: "Wörter" im Code durch etwas anderes ersetzen
Beispiel: #define MAX_LEN 10
Ersetzt im Code MAX_LEN durch 10
Sinnvoll für Konstanten
sizeof: gibt Größe eines Typs in in Byte aus
- sizeof(uint32_t) liefert 4 als Ergebnis, da 32 Bit = 4 Byte
float: Gleitkommazahlen
- hat meist 32 Bit -> nicht alle reelle Zahlen darstellbar
- geeignet, wenn kleine Rundungsfehler akzeptabler sind
void:
- Obwohl der C-Syntax verlangt, dass jede Funktion einen Rückgabewert hat, gibt es viele Funktionen, die keinen Rückgabewert haben wie z.B:
printf () - Die Idee: Die Funktion gibt einen "Nicht-Wert" zurück
void
void :*
- Viele Funktionen interessiert es nicht, auf welchen Datentyp ein Pointer zeigt
- Wichtig ist nur, dass es ein Pointer ist
- Idee: Benutzen eines Pointer auf "irgendwas" void *
free: Umkehrfunktion zu malloc: Speicher wird nicht mehr benötigt und daher wieder freigegeben
#include <stdlib.h>
void free(void *p)
- Der Block, auf den p zeigt wird freigegeben
- Parameter p muss das Resultat eines vorherigen Aufrufs von malloc sein (nur was angelegt wurde, kann wieder freigegeben werden)