私は通常、再帰をかなりよく理解していますがstrcpy
、ポインターのようなC関数に慣れていないため、この再帰がどのように文字列を反転させるかを理解できませんでした。
char *reverse(char *string)
{
if (strlen(string) <= 1)
return string;
else
{
char temp = *string;
strcpy(string, reverse(string+1));
*(string+strlen(string)) = temp;
return string;
}
}
このstrcpy
部分は私には少し複雑に思えますが、この行の目的は何
*(string+strlen(string)) = temp;
ですか?
文字列を反転した後、文字列の最初から最後にある文字を追加する必要があることはわかっていますが、このコードの背後にあるロジックを理解しているかどうかはわかりません。