Zum Inhalt springen

char *argv[] und char* argv[] unterschied


Empfohlene Beiträge

Geschrieben

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?

Geschrieben

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.

Geschrieben
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 :)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...