Ich fang mal von hinten an:
Das const sagt dem Benutzer der Funktion, daß die Funktion diese Variable nicht ändern wird. Andere String-Funktionen tun das, diese aber nicht. Das hat mit optimieren nichts zu tun. Wenn du selber weißt, was die Funktion tut, kannst du das getrost weglassen.Wozu das Const in der Funktion. Ich hätt gedacht daurch kann der Compiler eventuelle Optimierungen vornehmen.
Das muß er auch tun. s wird ja in der Schleife verändert (s++), also muß strlen neu berechnet werden. Und jetzt doch zum Optimizer: wenn s innerhalb der loop konstant wäre, könnte der Optimizer die Berechnung von strlen aus der loop nehmen und außerhalb berechnen. Dein for()Er ruft bei jedem Durchlauf, also für jedes Zeichen die Funktion StrLen auf, aber jedesmal mit dem incrementierten Pointer
ist einfach falsch, zumindestens beschreibt es nicht, was du meinst.for (i=0; i<StrLen(s); i++)
Das ganze macht man eigentlich viel einfacher, so in der Richtung:
Und Funktionen wie strlen() o.ä. gibts fertig in der libc, die schreibt man nicht selbstCode:while(*s) { .... s++; }
MfG Klebwax
Lesezeichen