In allen C-Programmen ist der Einsprungpunkt die Funktion main()
. Jedes C-Programm hat eine, auch Goodbye.c
und die anderen Programme, die Sie bisher geschrieben haben. Die main()
-Funktion ist die Maschine, die das Programm zum Leben erweckt und den Text am Bildschirm erzeugt.
Andere C-Programme verrichten andere Arbeiten in ihren main()
-Funktionen. Aber egal, was da steht, es ist immer die erste Anweisung für den Computer, sobald das Programm gestartet wird.
main() ist der Name der ersten (beziehungsweise höchsten) Funktion in jedem C-Programm. C-Programme können auch andere Funktionen enthalten, aber main() ist die wichtigste.
Wenn man eine Funktion aus einem C-Programm erwähnt, schreibt man hinter den Namen Klammern, so wie in main(). Das hat nichts zu bedeuten, jeder macht das und wir werden es auch tun.
Bei einigen Fehlermeldungen haben Sie vielleicht auch schon den Hinweis gelesen »… in function main«. Dies bedeutet, dass der Fehler innerhalb der Funktion main() aufgetreten ist.
Eine Funktion ist eine Maschine – eine Ansammlung von Anweisungen, die etwas tun. C-Programme können eine Menge Funktionen haben, aber die main()-Funktion ist die oberste und wichtigste in einem C-Programm. Sie darf nicht fehlen.
Funktion. Funktion. Funktion. Gewöhnen Sie sich an das Wort.
Stückliste
Hier einige interessante Teile unseres letzten C-Programms:
1 #include wird auch Präprozessor-Direktive genannt, was ziemlich eindrucksvoll klingt und auch nicht unbedingt der richtige Begriff sein muss, aber Sie müssen sich das nicht merken. Sie bewirkt, dass der Compiler an dieser Stelle ein anderes Programm oder eine Datei einfügt (oder inkludiert, wie man auch auf Neudeutsch hochtrabend sagen kann). Dies spart in der Regel eine Menge Arbeit.
2 <stdio.h> ist ein Dateiname in spitzen Klammern (was man als den Versuch von C deuten kann, Sie dazu zu zwingen, sämtliche Klammerarten zu kennen). Die ganze Zeile #include <stdio.h> sagt dem Compiler, dass er die Datei Stdio.h, die Standardeingabe- und -ausgabeanweisungen (englisch input/output), benutzen soll.
3 int main bezeichnet die Funktion main. Das int bezeichnet den Typ der Funktion oder das, was die Funktion erzeugt. Jedes C-Programm erzeugt mindestens eine Zahl, selbst unser kleines Beispiel; das int steht für die Erzeugung einer ganzen Zahl.
4 Zwei leere runde Klammern folgen dem Funktionsnamen. Teilweise stehen noch Dinge zwischen den Klammern, dazu kommen wir in Kapitel 6.
5 Die geschweiften Klammern fassen die Bestandteile der Funktion ein. Alles zwischen { und } gehört in Abbildung 2.2 zur Funktion main().
6 printf ist eine andere Funktion, die den Computer etwas Bestimmtes tun lässt.
7 Zum printf gehören auch runde Klammern, diesmal allerdings mit Inhalt. Sie fassen hier Text oder auch einen sogenannten String ein. Alles zwischen den Anführungszeichen " und " ist Teil des Strings.
8 Ein interessanter Teil des Strings ist das \n. Es handelt sich um einen Backslash mit einem kleinen n. Dies stellt das gleiche Zeichen dar, das auch durch die -Taste erzeugt wird. Es beendet den String mit einer »neuen Zeile«.
9 Wie bereits erwähnt, muss jedes C-Programm etwas erzeugen, aber eigentlich sind wir noch gar nicht so weit. Wir liefern als Ergebnis einfach eine 0 zurück, was die Aufgabe von return ist.
10 Schlussendlich enden die Zeilen von printf und return mit einem Semikolon (;). Das Semikolon ermöglicht dem Compiler zu erkennen, wo eine Anweisung endet und eine andere beginnt – so wie ein Punkt das Ende eines Satzes kennzeichnet.
Text in einem Programm heißt String. Zum Beispiel "bla-bla-bla" wäre ein String. Ein String wird von Anführungszeichen " eingerahmt.
Die Sprache C ist aus Schlüsselwörtern zusammengesetzt, die in Anweisungen auftauchen. Die Anweisungen enden mit einem Semikolon.
Die Sprache C mit ihren Schlüsselwörtern
Die Sprache C ist kurz. Es gibt nur wenige Schlüsselwörter in C – wäre Spanisch doch auch so einfach! Tabelle 2.1 listet die Schlüsselwörter auf.
_Alignas | _Alignof | _Atomic | _Bool |
_Complex | _Generic | _Imaginary | _Noreturn |
_Static_assert | _Thread_local | asm | auto |
break | case | char | const |
continue | default | do | double |
else | enum | extern | float |
for | goto | if | inline |
int | long | register | restrict |
return | short | signed | sizeof |
static | struct | switch | typedef |
union | unsigned | void | volatile |
while |
Tabelle 2.1: Schlüsselwörter der Sprache C
Nicht schlecht, oder? Aber das sind nicht alle Wörter, denen man in C begegnet. Andere Wörter oder Anweisungen werden Funktionen genannt. Diese umfassen Kostbarkeiten wie printf
und einige Dutzend andere Funktionen, die zusammen mit den grundlegenden Schlüsselwörtern die Erzeugung von Programmen ermöglichen.
Arbeiten Sie unter Windows oder Linux, finden Sie zusätzliche spezielle Funktionen für die jeweiligen Betriebssysteme, die auf den grundlegenden Kern der C-Standardfunktionen aufgesetzt sind. Und falls Sie unter Windows programmieren, finden Sie Hunderte von spezifischen Funktionen nur für Windows, sodass der Umfang der Sprache C plötzlich enorm wächst. Nein, Sie müssen sich nicht alle merken. Deswegen kommen alle C-Compiler mit einer Sprachreferenz daher, die man nach einiger Zeit direkt neben dem Bildschirm liegen hat.
Sprachen sind mehr als nur eine Ansammlung von Wörtern. Sie umfassen auch eine Grammatik, die beschreibt,