"nicht ganz" - die Sache mit dem Abbruch. Versuche es auch mal:
Vor der Schleife (while) zeigt s (ein Pointer) auf eine Speicherstelle,
in der das erste auszugebende Zeichen des Strings steht. Der Ausdruck
bei while "macht" folgendes (1) kopiert den Inhalt der Speicherstelle
(ein "Zeichen") auf das s zeigt in c. Der * steht fuer die
Dereferenzierung. Ist s ein Pointer, also nichts anderes als ein
"Zahl" die einer Speicherstelle entspricht, kann mit *s auf den
Inhalt dieser Speicherstelle zugegriffen werden. (2) s wird nach der
Zuweisung um eins erhoeht (++), der Pointer zeigt somit beim naechsten
Schleifendurchlauf auf die naechste Speicherstelle, also auf das
folgende Zeichen im String. Nun muss man wissen: per Konvention enden
Strings in C mit einem Null-"Zeichen", ein Zeichen (char)
(vereinfacht) auch mit Zahlen verglichen werden kann (verglichen wird
quasi z.B. der ASCII-code des Zeichens) und Bedingungen sind dann
"wahr" wenn das Ergebnis ungleich 0 ist. Damit kommt man zu (3): wenn
das Ergebnis der Zuweisung (also c) ungleich 0 ist (also nicht das
"Endezeichen") wird c ausgegeben (ausgeschrieben (c = *s++) != 0
etwas "eindeutiger" (c=*s++)!='\0').
Nun ja - Prosa in "Epos-Laenge". Hoffe es hilft, Martin