Ich beginne gerade mit C, lese viel über Zeiger und Arrays, aber ich kann nicht verstehen, warum mein Code nicht richtig funktioniert.Initialisierungszeiger von argv zum Vergleichen von Adressen
Ich versuche, eine while-Schleife mit der Adresse von argv ersten Element ohne Erfolg zu konditionieren. Ich bin davon überzeugt, dass ich argv den falschen Weg benutze. Hier
ist der Code:
int main(int k, const char* argv[])
{ const char** first = NULL ;
first = &argv[0] ;
argv += k ;
while (argv > first) puts(*argv), argv-- ;
return 0 ; }
Gibt einen Segmentation Fault.
Dies ist, was ich in meinem Kopf tue:
einen Zeiger zuerst erstellen, es auf NULL zuweisen (zwei mit * wegen argv Typ)
diese Zeiger auf die Adresse des argv ersten Elements zuweisen , argv [0], um es offensichtlich zu machen.
Verschieben von argc (k) argv
Die while-Schleife argv Adresse zu erster Adresse wird verglichen und Drucke * argv solange argv nicht diese erste Adresse erreicht, dann argv dekrementieren.
Der obige Code sollte in der Tat alle Elemente in einer Befehlszeile zurückgeben, beginnend mit dem letzten und ignorieren den ersten (Programmname).
Vielen Dank für Ihre Hilfe!
Haben Sie die Antwort von Ihrem bearbeiten! Vielen Dank. – InTheMoodForNow
Ich habe 'printf' anstelle von' puts' verwendet und habe die erste zu druckende Zeichenfolge '(null)' bekommen. – Gaurav