MR10 Geschrieben 25. Mai 2019 Geschrieben 25. Mai 2019 Hallo, Leute bin neu hier Ich habe das Internet nach einer Antwort auf dieser Frage durchsucht aber nichts gefunden. Es mag wie eine banale Frage auf manche wirken aber ich möchte da doch sicher gehen. Gibt es einen Unterschied zwischen char *argv[] und char* argv[]. Bin gerade am C Lernen habe mir einige Tutorials durchgelesen und auf Youtube angeschaut und mal wird die eine Variante verwendet mal die Andere. Durch die Eingabe von Kommandozeilenargumenten konnte ich keinen Unterschied festellen aber warum dann die unterschiedliche Schreibweise? Zitieren
Whiz-zarD Geschrieben 25. Mai 2019 Geschrieben 25. Mai 2019 Beides ist das selbe. Allerdings kann die Schreibweise char* argv[] in die Irre führen. Beispiel: char* c1, c2; welchen Typ hat nun c2? char oder char*. Die Antwort ist char. Nur c1 ist char*. Es wäre also besser, man schreibt char *c1, c2; oder man trennt es gleich: char *c1; char c2; Der Grund für diese unterschiedliche Schreibweise liegt in den Unterschieden zwischen C und C++. In C schreibt man char *c1. Weil es der Zeiger auf ein char ist. In C++ ist es üblich, den Typen und dann den Variablennamen zu schreiben. Der Typ ist ja ein Zeiger auf ein char. Also char* c1. Da aber C++ nur eine Erweiterung von C ist, versteht der Compiler beide schreibweisen. Zitieren
MR10 Geschrieben 25. Mai 2019 Autor Geschrieben 25. Mai 2019 @Whiz-zarD Vielen Dank für die Erklärung! Zitieren
Xyl Geschrieben 31. Mai 2019 Geschrieben 31. Mai 2019 Am 25.5.2019 um 05:44 schrieb MR10: Hallo, Leute bin neu hier Ich habe das Internet nach einer Antwort auf dieser Frage durchsucht aber nichts gefunden. Es mag wie eine banale Frage auf manche wirken aber ich möchte da doch sicher gehen. Gibt es einen Unterschied zwischen char *argv[] und char* argv[]. Bin gerade am C Lernen habe mir einige Tutorials durchgelesen und auf Youtube angeschaut und mal wird die eine Variante verwendet mal die Andere. Durch die Eingabe von Kommandozeilenargumenten konnte ich keinen Unterschied festellen aber warum dann die unterschiedliche Schreibweise? Praeferenz. Ich sag immer: man nutze doch bei pointern immer: char *args; einfach aus dem einfachen grund, dass du auf eine speicheradresse zeigst, nicht auf einen Datentypen. Liest sich besser, meiner meinung nach. im uebrigen, fuer dich noch als kleine information ... char *argv[]; char **argv; is fast das gleiche, bis auf das du auf dem oberen teil sagt: das ist ein Zeiger auf ein zeiger mit X-Laenge. Bei dem unteren Teil sagst du eher: Ich zeige auf einen Zeiger von Zeiger mit undefinierter Laenge. dennoch kannst du bei dem unteren beispiel den [] operator aufrufen und somit direkt auf elemente zugreifen. Hoffe ich konnte es nochmal ein wenig erlaeutern Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.