gpt4 book ai didi

c++ - 反转字符串函数 C++

转载 作者:行者123 更新时间:2023-11-30 03:41:42 24 4
gpt4 key购买 nike

我不明白 stringReverse 函数是如何工作的

谁能给我解释一下???

实际上 (( stringReverse( &strArray[ 1 ] ); )) 是模糊的。

#include <iostream>

using namespace std;

void stringReverse( const char [] );

int main()
{
const int SIZE = 30;
char strArray[ SIZE ] = "Print this string backwards.";

for ( int loop = 0; loop < SIZE; ++loop )
cout << strArray[ loop ];

cout << '\n';
stringReverse( strArray );
cout << endl;

return 0;
}

void stringReverse( const char strArray[] )
{
if ( strArray[ 0 ] == '\0' )
return;

stringReverse( &strArray[ 1 ] );
cout << strArray[ 0 ];
}

最佳答案

其实很简单,如果你把它写在一张纸上,使用一个短字符串(例如 "123")。使用参数 "123" 调用 stringReverse 会导致以下调用:

stringReverse("123")
-> stringReverse("23")
-> stringReverse("3")
-> stringReverse("")
// strArray[0] == 0
-> return
cout << '3'
cout << '2'
cout << '1'

该函数递归调用自身,每次调用时将当前字符指针前进一个字符,直到到达末尾并立即返回。剩下的是尚未运行的递归调用的输出 (cout)。

换句话说:每次递归调用都会将一个字符放入堆栈中。一旦到达末尾,最后的递归调用返回,函数从它们停止的地方(递归调用之后)开始,将字符从堆栈顶部打印到底部。

关于c++ - 反转字符串函数 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37232394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com