Hallo,
so sieht es zwar am übersichlichsten aus, aber dabei scheint mir eines nicht klar zu sein, denn was bedeutet nun ++argv in der 1. und ++*argv in der 2. Schleife? ++argv zu inkrementieren bedeutet von der Logik her also "zeige auf den nächsten Zeiger in meinem Array?" Für mich wäre es logisch gewesen, würde dort ++*argv inder 1. und ++**argv in der 2. Schleife stehen, aber nur so wie in deinem Beispiel funktioniert es. Ich dachte nämlich, dass ich auf die einzelnen Elemente (die die Kommandozeilenargumente enthalten) in dem Array von Zeigern mit *argv zugreife. Bei der Ausgabe von printf ist es für mich wieder logisch, wnen ich **argv ausgebe, aber warum inkrementiere ich dann nicht auch in der 2. Schleife so: (**argv)++, bzw ++**argv?
Eines verstehe ich dabei noch weniger. Ich könnte genauso gut folgendes schreiben:
for(; *argv; argv++)
{
for(; **argv; (*argv)++)
printf("%c\n", **argv);
}
(*argv)++ erhöht doch den WERT, worauf der Zeiger zeigt, d.h. würde an dieser Stelle ein "u" stehen, müsste dieses "u" auf ein "v" inkrementiert werden, da "v" das nächste Zeichen nach "u" ist. Tut es aber nicht. Es funktioniert so richtig. Logisch wäre für mich aber wieder gewesen, wenn ich *(argv++) schriebe, denn das inkrementiert den Zeiger doch auf die nächste Position. Dies funktioniert aber nicht. Wieso?
Markus