C ++反向打印字符串

时间:2013-11-05 03:40:51

标签: c++ string pointers reverse

此程序可以正常运行并执行所需操作。我的问题是关于ReverseName函数,以及它是如何工作的。我能够从我书中的一些例子中对它进行逆向工程,但我无法弄清楚它是如何工作的。我得到名字被发送给它。我只是不明白它是如何反向打印的。

#include <iostream>
using namespace std;


void ReverseName(char *s ); 

int main(void){ 

    char Name[] ="John Doe";

    cout << "Name is: " << Name << "\n" << "Name Backwards is: " ;

    ReverseName(Name); 

    cout << "\nName is: "<< Name << '\n';

    return 0; 
} 

void ReverseName(char * s){ 

    if(*s){ 
        ReverseName(s+1); 
        cout << *s; 
        } 

    return; 
}

3 个答案:

答案 0 :(得分:2)

void ReverseName(char * s){ 

    if(*s){ 
        ReverseName(s+1); // come into the end of the string 
        cout << *s; 
        } 

    return; 
}

就像这样:

'J'
call --> 'o'
         call  ---> 'h'
                    call  ---> ...
                               call  ---> 'e'    (Recursion to the end)

当堆栈到达递归结束时,它将按顺序执行。然后它就像。

                                       cout << 'e'
                            cout << ...
                 cout << 'h'
        cout << 'o'
cout << 'J' 

(come back from the call stack)

答案 1 :(得分:0)

这是一个递归函数。

它获取一个指向char数组的指针并调用自身,直到到达char数组的末尾,然后它“展开”递归,从后面打印所有的chars。

答案 2 :(得分:0)

ReverseName()是一个递归函数。

http://www.learncpp.com/cpp-tutorial/710-recursion/

相关问题