006
18.06.2004, 16:59 Uhr
~AS
Gast
|
Hallo,
so bescheiden ist die Aufgabe gar nicht.
Wenn mich meine rudimentären Kentnisse im Dos-Programmieren nicht verlassen haben, ist die main () Anweisung falsch.
Wenn sie nämlich so :
main (int argc,char *argv[])
heißt, bekommt das ganze etwas mehr Sinn.
int argc ist die Anzahl der Argumente char *argv[] ist eine Liste von Argumenten definiert als array of pointers of char oder als pointer to pointer to char. ( siehe Hilfe zu main())
d.h. Man bekommt eine Liste mit den übergebenen Argumenten. z.B. :
char * argv[6]; char null[]="Hallo"; char eins[]="wie"; char zwei[]="geht"; char drei[]="es"; char vier[]="Dir"; char fuenf[]=""; argv[0]=null; argv[1]=eins; argv[2]=zwei; argv[3]=drei; argv[4]=vier; argv[5]=fuenf;
mit char *X = *++argv; enthält X den Zeiger auf das zweite Feld (eins) mit dem Inhalt "wie". Das übergebene argv zeigt auf das erste Feld. mit ++argv wird der Zeiger incrementiert und zwar bevor die Zuweisung erfolgt.
mit Y = (*++argv)[0] enthält Y das erste Element des zweiten Feldes also 'w'. Erklärung siehe oben.
mit char Z = *++(argv[0]); enthält Z das zweite Element des ersten Feldes also 'a'. argv[0] zeigt auf das 'H' des ersten Feldes mit dem Inhalt "Hallo". der Zeiger wird incrementiert, also zeigt er auf "allo". Die Zuweisung wir nur über das erste Zeichen gemacht, daher 'a'.
mit char W =**++argv; enthält das erste Zeichen des Feldes, daß Du mit *++argv erhältst (siehe oben bei X). Also 'w'.
Beim letzten Argument muß ich mich neinen Vorrednern anschließen.
Ich hoffe geholfen zu haben und nich nur mehr Verwirrung gestiftet habe. Aber mit dem post- und präfix incrementieren und decrementieren kann man zwar elegant programmieren, aber diejenigen, die das zu pflegen haben sind arm dran.
mfg AS |