Если вы введете «abc», стек вызовов будет выглядеть примерно так:
reverse("abc")
reverse("bc")
reverse("c")
print("c")
print("b")
print("a")
Таким образом, каждый обратный вызов вызывает саму себя с одной и той же строкой, но исключая первый символ, и ТО печатает первый символв строке.
Удаляются ли символы в строке, потому что они передаются по ссылке?
В C. нет вызова по ссылке в виде эмуляции указателейэто, но все в C передается по значению.Кроме того, тип указателя const char * const
говорит о двух вещах.Во-первых, указатель не будет переназначен, чтобы указывать на что-либо еще, но, что более важно, он также говорит, что строка не будет изменена.Попробуйте добавить строку sPtr[0] = 'a'
где-нибудь, и вы получите ошибку компилятора.