char Text::toReverse(Text t1, int t) const
{
if (t1.bufferSize == 1)
return ' ';
if (t == (t1.bufferSize) - 1)
return ' ';
cout << t1.buffer[(t1.bufferSize) - 2 - t];
return toReverse(t1, t + 1);
}
有一个Text类,其私有成员char* buffer
是一个空终止字符序列,bufferSize是字符串的长度。
我通过实际写出来得到了这段代码。这对我来说很有意义,这就是为什么我不知道代码为什么会崩溃的原因。我尝试调试它,但由于一些错误处理问题,它不会让我继续。
答案 0 :(得分:1)
如果您获得&#34;访问违规写入位置&#34;,它不是由此功能引起的,因为它不会写入任何内存。
它没有明显的错误,但这主要是因为向后读取数组的算法令人困惑。
要以反向方式递归打印字符串,首先打印&#34;休息&#34;相反的字符,然后打印&#34;这&#34;字符。
当你到达字符串的末尾时停止。
如果该函数应该打印一个字符串,那么该函数返回char
的原因非常不清楚,所以这个函数不会:
void Text::toReverse(Text t1, int t) const
{
if (t < t1.bufferSize)
{
toReverse(t1, t + 1);
cout << t1.buffer[t];
}
}