C von A bis Z

C von A bis Z #

Kapitel 2: Das erste Programm #

  • Präprozessor-Befehle werden mit einem # am Beginn der Zeile aufgerufen. Der Präprozessor ist ein teil des Compilers, der nicht das Programm übersetzt, sondern kontrollierend temporäre Änderungen im Programmtext vornimmt. (39)
  • Headerdateien sind standardmässig in /usr/include gespeichert
  • Eine main-Funktion wird in einem C-Programm immer benötigt (40)
  • Wird ein String mit einem \ über mehrere Zeilen geschrieben, werden alle Leerzeichen zu Beginn der neuen Zeile in den String miteinbezogen! (41)

Kapitel 3: Grundlagen #

Verschiedene Zeichensätze (43ff.)

  • Basis-Zeichensatz:
  • Ausführungszeichensatz: Basis-Zeichensatz + Steuerzeichen
  • Trigraph-Zeichensatz: ??; ersetzt in der C-Syntax verwendete Sonderzeichen

Regeln für Bezeichner (48):

  • Erlaubt: Buchstaben, Ziffern, Unterstriche
  • Erstes Zeichen muss ein ein Buchstabe sein
  • Unterscheidung zwischen Gross- und Kleinschreibung
  • Alle Schlüsselwörter sind reserviert

Literale: Von einer Programmiersprache definierte Zeichenfolgen zur Darstellung der Werte von Basistypen (48)

  • Ganzzahlen:
    • Dezimalzahlen (erste Ziffer darf keine 0 sein)
    • Oktalzahl (beginnt immer mit Ziffer 0)
    • Hexadezimalzahl (beginnt immer mit der Sequenz 0x bzw. 0X; Gross- oder Kleinbuchstaben für Zahlen 10-15 möglich)
    • Suffixe:
      • L bzw. l: long-Zahl (32 bzw. 64 bit)
      • U bzw. u: unsigned
  • Suffixe Fliesskommazahl:
    • F bzw. f: Einfache Genauigkeit
    • L bzw. l: Erhöhte Genauigkeit
  • Zeichenliteral: In einfachen Hochkommata
  • Zeichenkette: In doppelten Hochkommata; Zeichenketten sind immer um ein Zeichen länger als dargestellt (letztes Zeichen ist ASCII-Wert 0, d.h. Literal \0 (Stringbegrenzer))

Kommentare (51ff.) Vorsicht: Bei einzeiligen Kommentaren (//) darf der Kommentar nicht mit einem \ abgeschlossen werden, da sonst der Kommentar auf der nächsten Zeile weitergeführt wird!

Kapitel 4: Formatierte Ein-/Ausgabe mit “scanf()” und “printf()” #

Eine Variable kann in vier Einzelteile zerlegt werden (57):

  • Datentyp
  • Name der Variable
  • Speicheradresse der Variable
  • Wert der Variable
  • (Zugriffsrecht)
  • (Gültigkeitsbereich)
  • (Lebensdauer)

Möglichkeiten zur Umgehung des Puffer-Problems bei scanf():

  • Benutzen von fflush() (funktioniert nicht unter Linux)
  • Benutzen einer do-while-Schleife
  • Alternative zu scanf() wählen (bspw. Kombination von fgets() mit sscanf())