IT-Academy Logo
Sign Up Login Help
Home - Programmieren - C++ - Standard-Parameter der Funktion main()



Standard-Parameter der Funktion main()

Erklärt an einem einfachem Beispiel eine Standard-Deklarationsweise der Eintrittsfunktion main() in den Programmiersprachen C und C++.


Autor: Christian Scheffler (@tention)
Datum: 22-06-2003, 14:44:21
Referenzen: keine
Schwierigkeit: Profis
Ansichten: 24481x
Rating: 8 (1x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Erläuterung

Die Übergabe von Funktionsargumenten ist Ihnen sicherlich bekannt. Sie haben die Möglichkeit, z.B. Werte, Strings, Zeiger und jegliche Datentypen bei einem Funktionsaufruf zu übergeben. Selbstverständlich können Sie auch an die Funktion main() Parameter übergeben. Dies erfolgt beim Aufruf der Funktion, also beim Programmaufruf. Die bisherige Definition der Funktion:
int main(void)
wird ersetzt durch die vollständige Definition:
int main(int argc, char *argv[])
Das Argument int argc repräsentiert dabei die Anzahl der übergebenen Parameter, die char *argv[] beinhaltet. Bei char *argv[] handelt es sich um einen Vektor mit Zeigern auf Strings, also auf die übergebenen Parameter.

argv[0] beinhaltet immer den String des Programmaufrufes wie z.B. C:\Programme\main.exe, argc hätte somit den Wert 1, da kein zusätzlicher Parameter übergeben wurde.

Lautet der Programmaufruf stattdessen: C:\Programme\main.exe -debug -1000, dann hätte argc den Wert 3, und der Inhalt von char *argv[] sähe wie folgt aus:

argv[0] enthält: C:\Programme\main.exe
argv[1] enthält: -debug
argv[2] enthält: -1000

Zu beachten ist dabei: argv kann nicht direkt verglichen werden, da es sich um eine Adresse eines Strings handelt, und kann nur mit geeigneten String-Funktionen verarbeitet werden (z.B. strcmp() aus string.h).

©2003 TENTION


Rolfhub
Senior Member
Beitrag vom:
30-10-2003, 00:05:11

Ebenfalls 2 Kleinigkeiten

Ich habe auch zwei Anmerkungen: 1. Unterschied UNIX/Linux versus Windows: Wenn man das Programm so aufrufen würde: 'main.exe *', so würden dem Programm sowohl unter UNIX/Linux als auch unter Windows die Namen aller Dateien im aktuellen Verzeichnis übergeben werden, bei Aufruf mit 'main.exe *.*' würden unter Windows ebenfalls alle Dateinamen übergeben, unter UNIX/Linux nur die Namen aller Dateien, deren Name mindestens einen Punkt enthält. 2. Anderer Unterschied UNIX/Linux versus Windows: Falls ich dem Programm Argumente übergeben will, die ein Leerzeichen enthalten (z. B. Dateiname mit Leerzeichen), so muss ich zwischen den genannten Betriebssystemen unterscheiden: UNIX/Linux: 'main.exe Name\ mit\ Leerzeichen', Windows: 'main.exe "Name mit Leerzeichen"' (in Worten: Linuxer maskieren Leerzeichen mit dem Backslash, Windosen setzen den Dateinamen in Anführungsstriche (die doppelten, mit shift+2 zu erreichen)). Das mit den Anführungszeichen um den Dateinamen funktioniert aber auch unter Linux, allerdings darf ich dann natürlich keinen Backslash benutzen (entweder maskeren, oder Anführungsstriche benutzen). Linux ist sogar noch flexibler: Im Gegensatz zu Windows kann ich statt den doppelten auch die einfachen Anführungszeichen benutzen.

-----------------------------------------------------


TheDude
Junior-Member
Beitrag vom:
22-06-2003, 16:33:30

2 kleinigkeiten

1) "char *argv[]" wird gerne auch als "char **argv" geschrieben, was das gleiche ist 2) das Vergleichen von Strings muss immer mir geeigneten Funktionen geschehen, das gilt also nicht nur für argv[]

-----------------------------------------------------
while (!asleep()) sheep++;


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04508
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06246
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1154
Comments: 0