Christian Seiler: C++ main (int argc, char *argv[])-Bedeutung?

Beitrag lesen

Hallo,

aus meinen frühen Konosolen C++-Zeiten habe ich main immer ohne Parameter definiert, jetzt habe ich schon öfters diese Deklaration gesehen: main (int argc, char *argv[]).

die Argumente werden jedoch im Funktionsablauf nicht weiter verwendet...
wozu dienen sie?

argc enthält die Anzahl an Kommandozeilenparameter + 1 und argv enthält die Kommandozeilenparameter sowie den Namen des aufgerufenen Befehls.

Wenn Du beispielsweise auf der Kommandozeile folgendes aufrufst ("meinprogramm" sei der Weg, Dein Programm aufzurufen):

meinprogramm hallo welt

dann ist argc == 3 und argv[0] == "meinprogramm", argv[1] == "hallo", argv[2] == "welt" und argv[3] == NULL.

Das ist übrigens nicht nur auf der Kommandozeile relevant. Wenn Du zum Beispiel ein Programm schreibst, das PDF-Dateien anzeigt, wir nennen es jetzt mal "zeigepdfan" und Du dieses Programm in den Einstellungen Deines Betriebsystems/Deiner Desktopumgebung mit dem Datentyp PDF verküpfst, dann wird bei jedem direkten Öffnen einer PDF-Datei das Programm aufgerufen, als ob es so über die Kommandozeile aufgerufen würde:

zeigepdfan /pfad/zur/datei.pdf

(oder unter Windows: zeigepdfan C:\pfad\zur\datei.pdf)

Das heißt, argv[0] wäre dan "zeigepdfan" und argv[1] wäre "/pfad/zur/datei.pdf", argv[2] wäre NULL und argc wäre 2.

Viele Grüße,
Christian