Ich habe mir den folgenden Code angesehen, auf den ich gestoßen bin, um eine Zeichenkette in umgekehrter Reihenfolge in C unter Verwendung von Rekursion zu drucken:
void ReversePrint(char *str) { //line 1
if(*str) { //line 2
ReversePrint(str+1); //line 3
putchar(*str); //line 4
}
}
Ich bin relativ neu in C und bin durch Zeile 2 verwirrt. *str
ist nach meinem Verständnis eine Dereferenzierung des Zeigers und sollte den Wert der Zeichenfolge an der aktuellen Position zurückgeben. Aber wie wird dies als ein Argument für eine bedingte Anweisung (die außer einem booleschen Recht sollte?) verwendet werden? In Zeile 3 wird der Zeiger immer auf den nächsten Block inkrementiert (4 Bytes, da es sich um einen int handelt)... könnte dieser Code also nicht fehlschlagen, wenn sich im nächsten Speicherblock nach dem Ende der Zeichenfolge zufällig Daten befinden?
Update : Es gibt also keine booleschen Typen in C, richtig? Eine bedingte Anweisung wird als "falsch" ausgewertet, wenn der Wert 0 ist, und andernfalls als "wahr"?