当我运行下面的代码时
void reverse(char *ptr)
有用。但是教科书里的函数原型是这样的:
void reverse(const char * const ptr )
为什么会这样?在第一个中,我假设我的指针可以指向不同的地址,并且它指向的值可以更改。在教科书原型中,地址和它指向的值都不能改变。但是我们想要这个吗?乍一看,因为它是递归的,它指向的值和地址需要改变才能起作用。也许我在这里遗漏了一些东西。
#include <stdio.h>
void reverse(char *ptr);
int main(void)
{
char sentence[80];
puts("Enter a sentence");
fgets(sentence,80,stdin);
reverse(sentence);
getch();
}
//recursive reverse function
void reverse(char *ptr)
{
if (ptr[0]=='\0')
{
return;
}
else
{
reverse(&ptr[1]);
putchar(*ptr);
}
}