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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...