C++ Kurs

Wenn fertig, bitte Fenster schließen

Die zweite Form der main() Funktion

Diese zweite Form der main(...)-Funktion besitzt innerhalb der runden Klammern noch zusätzliche Angaben. Solche Angaben innerhalb von Funktionsklammern werden auch als Parameter bezeichnet.


int main(int argn, char *argv[])
{
  ...hier stehen nachher Anweisungen
}

Mithilfe dieser Parameter können Sie einem Programmen beim Start zusätzliche Angaben mitgeben und diese dann innerhalb des Programms auswerten. Nehmen wir zum Beispiel einmal an, das Programm hat den Namen MYPROG.EXE und würde eine Datei mit Konfigurationsdaten benötigen. Der Name dieser Datei soll beim Start des Programms mit übergeben werden.  Damit könnte ein Aufruf des Programms wie folgt aussehen:

myprog -c config.dat

Das Programm müsste nun irgendwie diese zusätzlichen Angaben -c conf.dat erhalten. Und genau diesen Zweck haben die Parameter argn und argv innerhalb der Klammer von main(...).

Die Namen der Parameter argn und argv sind 'rein willkürlich'. Sie könnten den Parametern auch andere Namen geben wie z.B. option und value, jedoch haben sich argn und argv quasi als Standardnamen hierfür eingebürgert. Was Sie aber unter keinen Umständen ändern dürfen, sind die Datentypen der Parameter, also int und char*...[]. Was Datentypen sind wird später noch ausführlich erklärt.

Der Parameter argn enthält die Anzahl der eingegebenen Wörter beim Programmstart, einschließlich des Programmnamens. Unter Wörter werden hier beliebige Eingaben verstanden, die durch ein Leerzeichen voneinander getrennt sind. Auf die einzelnen Wörter kann über den Parameter argv zugegriffen werden. argv ist ein Feld von char-Zeigern, wobei der letzte Eintrag im Feld immer einen Zeiger mit dem Wert '0' enthält. Zu Zeigern und Felder kommen wir später noch. Nur so viel vorab: um auf ein bestimmtes Element in einem Feld zuzugreifen, geben Sie zuerst den Feldnamen an (hier also argv) und dann in eckigen Klammern den Index des gewünschten Elements. Die Parameter von main(...) würde damit bei obigem Aufruf folgende Werte besitzen:

Parameter Inhalt Bemerkung
argn 3 als Zahl
argv[0] "myprog" als Zeiger auf den Text
argv[1] "-c" als Zeiger auf den Text
argv[2] "config.dat" als Zeiger auf den Text
argv[3] 0 als Zahl

Anzumerken sei an dieser Stelle noch, dass die Inhalte von argv[] lt. C++ Standard nicht vorgeschrieben sind. Vielmehr sagt der C++ Standard prinzipiell nur aus, dass mithilfe von argv[] implementierungsabhängige Werte an das Programm übergeben werden können um dieses mit Informationen aus seiner Umgebung versorgen zu können.

 In der Regel aber enthält das Element argv[0] aber den Namen des Programms selbst. Der C++ Standard verlangt nur, dass hier der Name steht, mit dem das Programm aufgerufen wurde, und dies ist fast immer der Programmname.

Sie können jetzt einmal anhand des nachfolgenden Programms zum einen Ihren Compiler testen und zum anderen sich anschauen, wie innerhalb eines Programms die Parameter ausgewertet werden.

Starten Sie VC++ IDE und erstellen Sie ein neues Projekt mit dem Namen mainpar. Fügen Sie dem Projekt eine leere Quellcode-Datei hinzu und geben das folgenden Programm ein:


// C++ Kurs
// Beispiel für die Übergabe von Parameter an ein Programm

#include <iostream>

int main (int argn, char* argv[])
{

   std::cout << "Folgende Parameter wurden übergeben:" << std::endl;
   for (int iLoop=0; iLoop < argn; iLoop++)
       std::cout << iLoop+1 << ". Parameter: " << argv[iLoop] << std::endl;

}

Übersetzen Sie zunächst das Programm. Anschließend öffnen Sie ein Konsolenfenster und wechseln in das Verzeichnis, in dem die ausführbare Datei (exe-Datei) liegt. Starten Sie das Programm und geben sie ihm beim Start noch zusätzliche Parameter mit, so wie im Beispiel aufgeführt.

D:\temp\mainpar\Debug>mainpar eins zwei drei
Folgende Parameter wurden übergeben:
1. Parameter: mainpar
2. Parameter: eins
3. Parameter: zwei
4. Parameter: drei

D:\temp\mainpar\Debug>mainpar "erster parameter" "und zweiter"
Folgende Parameter wurden uebergeben:
1. Parameter: mainpar
2. Parameter: erster parameter
3. Parameter: und zweiter

D:\temp\mainpar\Debug>

Wie Sie der Programmausgabe entnehmen können, werden Parameter durch Leerzeichen getrennt. Soll ein Parameter auch Leerzeichen enthalten, so ist der Parameter in Anführungszeichen zu setzen.

Wenn Sie genug ausprobiert haben, schließen Sie dieses Fenster und kehren zum Kurs zurück.