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 (232 ) bis 2.147.483.647 (2321) 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)