Zu dezipart1:
In der ersten
while-Schleife zählt er beginn hoch, bis er am Stringende angekommen ist; das erkennt er am Nullzeichen, das jedes Stringende kennzeichnet. Dies ist die Schleife, die das macht:
In der nachfolgenden
do-Schleife zählt er diesen Zeiger wieder herunter, bis er wieder am Anfang angekommen ist, erkennbar am Vergleich
(c != beginn). Er arbeitet den String also von hinten nach vorne ab, und bearbeitet dadurch zuerst die Einer-Stelle und danach die immer höherwertigen Stellen, bis er am Anfang angekommen ist.
Zu dezipart2:
Der Rückgabewert ist void, weil er das Ergebnis in den String schreibt, auf den der Parameter
outbuffer zeigt. Dies kann man durchaus als Seiteneffekt bezeichnen. Es muss also kein Wert mit
return zurückgeliefert werden, weil das Ergebnis in den vom aufrufenden Programm übergebenen String geschrieben wird. Deine Frage kann ich dir leider nicht beantworten, weil nicht erkennbar ist, worauf sie sich bezieht.
PS: Normalerweise wird hier jeder geduzt, auch Du