int My_strlen(char* p)
{
if (*p != '\0')
{
return 1 + My_strlen(p + 1);
}
return 0;
/*int count = 0;
while (*p != '\0')
{
count++;
p++;
}
return count;*/
}
void reverse_string(char arr[])
{
char tmp = arr[0];
int len = My_strlen(arr) - 1;
arr[0] = arr[len];
arr[len] = '\0';
if (len > 1)//当数组里面的元素个数小于2的时候就停止递归
{
reverse_string(arr + 1);//递归实现元素交换,arr传的是
//首元素地址,arr+1 传下一个元素为数组的首元素,依次类推
}
arr[len] = tmp;
//int left = 0;
//int right = My_strlen(arr) - 1;
//while (left < right)//循环实现逆序
//{
// int tmp = arr[left];
// arr[left] = arr[right];
// arr[right] = tmp;
// left++;
// right--;
//}
}
int main()
{
char arr[] = "abcdef";
//int len = sizeof(arr) / sizeof(arr[0]) - 1;
reverse_string(arr);
printf("%s", arr);
return 0;
}