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]: 3e3c48

    Ersteres 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]: 3e24cc
    

    greetz 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]: 3e3c48

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


Anmelden zum Antworten