String
-
[quote="blurry333"]
krümelkacker schrieb:
blurry333 schrieb:
Man beachte: argv zeigt nicht auf (den Anfang) eine(r) Zeichenkette.
Da bekomm ich aber was anderes raus :
printf("Adresse in argv: %x\n",argv); printf("Adresse von argv[0]: %x",&argv[0]);Ausgabe:
Adresse in argv: 3e3c48
Adresse von argv[0]: 3e3c48Ersteres gibt nicht die adresse von argv aus, sondern die vom inhalt von argv. Das zweite ebenfalls. &argv ist die adresse von argv, weder argv noch &argv[0]
-
printf("Adresse in argv: %x -> %x\n",*argv, argv); printf("Adresse von argv[0]: %x\n",&argv[0]); printf("Adresse von argv[1]: %x",&argv[1]);Adresse in argv: 3e2441 -> 3e24c8 Adresse von argv[0]: 3e24c8 Adresse von argv[1]: 3e24ccgreetz KN4CK3R
-
blurry333 schrieb:
krümelkacker schrieb:
Man beachte: argv zeigt nicht auf (den Anfang) eine(r) Zeichenkette.
Da bekomm ich aber was anderes raus :
printf("Adresse in argv: %x\n",argv); printf("Adresse von argv[0]: %x",&argv[0]);Ausgabe:
Adresse in argv: 3e3c48
Adresse von argv[0]: 3e3c48Das klingt so, als würdest Du glauben, hier einen Widerspruch aufgezeigt zu haben. Dem ist nicht so. zeiger==&zeiger[0] ist immer wahr (Tautologie), unabhängig davon, wohin der Zeiger zeigt. Der Standard definiert zeiger[index] äquivalent zu *(zeiger+index). &zeiger[0] ist daher äquivalent zu &*zeiger, wobei sich & und * quasi wegkürzen.
Cachus schrieb:
Ersteres gibt nicht die adresse von argv aus, sondern die vom inhalt von argv.
Die Adresse von argv ist eigentlich noch weniger interessant.