You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么我编写的C++单词反转代码运行后无任何输出?

问题原因

你的代码存在多处语法错误和内存访问问题,直接导致运行失败无输出,具体问题如下:

  • 野指针非法访问:你声明了char * str指针,但没有为其分配任何可写入的内存空间,直接执行str[i]=xxx的写入操作属于未定义行为,大概率会触发内存访问错误、程序直接崩溃,自然不会产生输出。
  • 字符串长度计算函数不存在:C++ 标准库没有直接适配C风格字符数组的length函数,要计算char*指向的字符串长度,需要引入<cstring>头文件后调用strlen函数,否则代码会编译失败,或是调用到你未定义的错误函数得到错误长度。
  • 标准库命名空间缺失:标准输出对象cout属于std命名空间,如果你没有提前声明using namespace std;,也没有写std::cout的话,代码无法编译通过。
  • 函数返回值不匹配:你声明的函数返回类型是void*,但整个函数没有任何return语句,属于语法错误,严格编译器会直接拒绝生成可执行文件。

修正后参考代码

#include <iostream>
#include <cstring>
using namespace std;

void reverse(char * arr)
{
    int len = strlen(arr);
    int endindex = len - 1;
    // 为反转后的字符串分配内存,长度+1存结束符'\0'
    char * str = new char[len + 1];
    int i = 0;

    while(endindex >= 0)
    {
        str[i] = arr[endindex];
        i++;
        endindex--;
    }
    str[i] = '\0';
    cout << str;
    // 释放申请的堆内存避免泄漏
    delete[] str;
}

// 测试用例
int main() {
    char test[] = "hello";
    reverse(test);
    return 0;
}

内容的提问来源于stack exchange,提问作者Ravi Teja Reddy A.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 12:48:01