Adresse.



  • Hi,
    in C kenne ich zur Ausgabe einer Adresse das Formatierungszeichen p, also konkret:
    printf ("%p\n", /* some adress */ );

    Gibt es da auch etwas C++ spezielles?



  • Big Brother schrieb:

    Hi,
    in C kenne ich zur Ausgabe einer Adresse das Formatierungszeichen p, also konkret:
    printf ("%p\n", /* some adress */ );

    Gibt es da auch etwas C++ spezielles?

    Ja. Streams, überladene Stream-Operatoren und Typüberprüfung. Wenn du einen Pointer über einen Stream ausgibst wird die Adresse ausgegeben. Es sei denn es handelt sich um const [signed|unsigned] char* oder std::streambuf*, oder einen Pointer der dahin konvertiert werden kann, oder einen Pointer für den du eine selbstgeschriebene Überladung definiert hast, in dem Fall müsstest du per Hand in einen void* casten um die Adresse ausgeben zu lassen.

    http://www.cplusplus.com/reference/iostream/ostream/operator<</


  • Administrator

    int i = 234;
    int* p = &i;
    std::cout << p << std::endl;
    // oder falls du sicher gehen willst:
    std::cout << (void*)p << std::endl;
    

    Die zweite Version, weil es zum Beispiel bei eine char* oder char const* nicht die Adresse ausgibt, sondern den C String. Bei einem void* wird aber immer die Adresse ausgegeben.

    Edit: zu langsam ...

    Grüssli



  • Oh, so einfach. Ok, danke.
    Gruß,
    B.B.


Anmelden zum Antworten