Zeiger zum String funktioniert nicht....

Es gibt 26 Antworten in diesem Thema, welches 3.756 mal aufgerufen wurde. Der letzte Beitrag (2. November 2011 um 16:49) ist von sauhund.

  • Jup danke an Euch.

    mrsid , diese beide Varianten funktionieren Wunderbar:
    strcpy (681, "4-123");
    char *p_satz = 681;

    *p_satz++ = '-';
    *p_satz++ = '1';
    *p_satz++ = '8';
    *p_satz++ = '6';
    danke.

    gruss

  • Zitat

    ääääh. nein. naja. nicht wirklich. die wenigsten machen das, selbst ARM kann auf ungerade adressen zugreifen mitlerweile :)


    Wenn man es aktiviert. Nach dem Reset ist das aber ausgeschaltet (A-Flag im CR).

  • Wenn Du bei der 2. Version nach der 6 nichts mehr kopieren willst, musst Du den Zeiger eigentlich nicht mehr erhöhen. Andererseits sind Strings auf vielen Systemen nullterminiert, d.h. sie haben als letztes Zeichen eine Null, woran manche Funktionen das Ende der Zeichenkette erkennen. Schreibst Du Deine Zeichenkette einfach irgendwohin und lässt diese Kennung weg, kannst Du Probleme bekommen, wenn Du danach eine Funktion wie strcmp darauf loslässt.

    Dann hab ich inzwischen eine Antwort auf meine eigene Frage gefunden, ob man besser Pointer oder Indizes auf dem 64er nimmt. Indizes sind anscheinend besser.

    Punkt 12 hier:

    Bitte melde dich an, um diesen Link zu sehen.

    Ciao,
    Andreas

    PS: peiselulli: ich gebs zu, dass ich nie C auf 68000, Arm, Mips oder Alpha programmiert hab. Dort nur Hochsprachen. Andererseits würde ich das Alignment der Variablen im Zweifelsfall dem Compiler überlassen. Das machen viele Compiler auch auf x86 automatisch und ausreichend gut. Aber danke für den Hinweis! :)

  • Zitat

    Nach dem Reset ist das aber ausgeschaltet (A-Flag im CR).


    ausser dir und mir programmieren aber die wenigsten so nah an der maschine als das das interessieren täte =) für "normale" anwendungen spielt das eben genau garkeine rolle :)

    Zitat

    Dann hab ich inzwischen eine Antwort auf meine eigene Frage gefunden, ob man besser Pointer oder Indizes auf dem 64er nimmt. Indizes sind anscheinend besser.


    auch wenn die tipps da generell gut sind... auch mal auf das datum der seite guckn :) seit dem hat sich einiges getan.

  • Zitat

    für "normale" anwendungen spielt das eben genau garkeine rolle


    Bei denen weiß man halt nur nicht, auf welchen Proz die irgendwann mal laufen. Das könnte dann doch so ein armer, alter ARM9 sein und ... WUMMS !
    Besser bleiben lassen (wie Du schon sagtest, "memcpy" oder so) ...

    Zitat

    Alignment der Variablen im Zweifelsfall dem Compiler überlassen


    Das ist ja auch was anderes. Wenn man dem Compiler das "beste" Alignment nicht explizit verbietet, dann passt das schon.
    Es geht ja darum, falls man selber Pointerarithmetik macht.

  • auch wenn die tipps da generell gut sind... auch mal auf das datum der seite guckn :) seit dem hat sich einiges getan.

    Du meinst, der cc65 optimiert jetzt besser? Wäre ja schön, wenn sich da noch was getan hätte. Gibt es da Benchmarks zu?

    TIA,
    Andreas

  • "besser" ist relativ, aber ja... ein paar details funktionieren besser bzw anders. benchmarks gibts da aber eher keine (ausser den beispielprogrammen).