printf



  • Ein kleine dumme frage...

    Will gerade die Entfernung zwischen einem Pointer und einem string bestimmen.
    Beispiel:

    char buffer[20];
    Int *pointer;

    printf(“Die Entfernung ist : %p“,&buffer-&pointer);
    oder
    printf(“Die Entfernung ist : %d“,buffer-pointer);

    oder als %x

    bin mir einfach nicht sicher kann mir da einer helfen...



  • wahrscheinlic meinst du

    buffer-&pointer
    //es geht auch
    &buffer[0]-&pointer
    

    mfg



  • ich verstehe das nicht egal was ich mache es kommt immer invalid operands to binary -

    mfg



  • AFFE schrieb:

    ich verstehe das nicht egal was ich mache es kommt immer invalid operands to binary -

    man kann keine pointer voneinander abziehen, nur 'zahlen' von pointern.
    so z.b.

    long diff = (long)buffer - (long)pointer;
    

    das erste (long) killt den pointer-typ, damit die differenz in bytes rauskommt



  • sagen wir mal der Standort des string und des pointers ist 0x8049c74 und 0x8049c88 wie kann ich die Distanz ausrechen, also ohne pc

    schon mal danke im voraus für die Mathestunde ^^



  • Abziehen 😃



  • Aber erstmal ins Dezimal-Format umwandeln, damit können wenigstens die meisten taschenrechner besser Rechnen... und du vermutlich auch



  • net schrieb:

    man kann keine pointer voneinander abziehen

    Doch kann man, das fällt dann unter Zeigerarithmetik. Das Ergebnis ist ein signed integraler Wert vom Typ ptrdiff_t.

    C++ Standard schrieb:

    When two pointers to elements of the same array object are subtracted, the result is the difference of the
    subscripts of the two array elements. The type of the result is an implementationdefined signed integral type; this type shall be the same type that is defined as ptrdiff_t in the <cstddef> header (18.1).

    AFFE's Problem ist einfach, dass seine Zeiger nicht vom gleichen Typ sind, so ist die "Einheit" der Differenz nicht definierbar.



  • Zusätzlich wär noch zu sagen, dass das Ergebnis einer Pointersubtraktion nur definiert ist, wenn beide ins gleiche Objekt zeigen.



  • So danke groovemaster, -Foo-,YASC, net und spjoe für die Hilfe das Problem ist gelöst und ich bin dank euch etwas schlauer geworden 😉

    MFG


Anmelden zum Antworten