Die Funktion main()
,
die in C die Rolle des Hauptprogramms
in anderen Sprachen spielt, hat zwei
Parameter
und gibt einen
Wert vom Typ int zurück.
Der Rückgabewert signalisiert der aufrufenden Umgebung, ob der Programmlauf erfolgreich war. Ein Wert von 0 wird in aller Regel zurückgegeben, wenn alles halbwegs gut ging; eine 1 signalisiert: ,,Na ja, gerade eben noch`` und Werte ab 2 bedeuten, daß das eigentliche Ziel des Programms nicht erreicht werden konnte. Was mit dem Rückgabewert genau passiert, legt der Standard nicht fest.
Die Parameter, mit denen main()
aufgerufen wird, sind aus der
Kommandozeile aufbereitet,
mit der das Programm aufgerufen wird.
Wenn die Kommandozeile nicht benötigt wird, dann kann man die beiden
Parameter getrost weglassen.
Der erste der beiden Parameter ist vom Typ int und gibt die Anzahl der Strings an, auf die der zweite Parameter zeigt. Der zweite Parameter ist vom Typ char ** beziehungsweise char *[]. Er zeigt auf ein Feld, in dem wiederum Zeiger auf Strings hinterlegt sind. Die Anzahl der hinterlegten Strings und damit die Anzahl der Zeiger in dem Feld sind im ersten Parameter enthalten. Der erste Parameter ist immer mindestens 1, da der erste Zeiger im Feld auf den Namen des aufgerufenen Programms zeigen soll. Dies ist aber oft nur unter Unix der Fall. Bei den meisten anderen Systemen ist der erste String leer und enthält nur die abschließende Null.
Ab dem zweiten String stehen dann die Worte aus der Kommandozeile, mit der das Programm aufgerufen wurde.
Folgendes Programm pamain.c gibt seine Parameter auf dem Bildschirm aus:
/* Time-stamp: "03.10.02 08:14 pamain.c klaus@wachtler.de" * * Ausgabe aller Programmargumente */ main( int n, char **s ) { /* Schleifenzaehler vereinbaren: */ int i; /* Schleife von i=0 bis (n-1) in Einerschritten: */ for( i=0; i<n; i++ ) { /* Ausgeben von i und dem i-ten String der * Kommandozeile: */ printf( "Der %d. Parameter ist [%s]\n", i, s[i] ); } }
Wird es mit der Kommandozeile
abc defgaufgerufen, dann gibt es folgendes aus:
Der 0. Parameter ist [pamain] Der 1. Parameter ist [abc] Der 2. Parameter ist [defg]
Die erste Zeile kann je nach dem verwendeten System auch anders aussehen.
AnyWare@Wachtler.de