小菜韩 2023-02-27 15:38 采纳率: 42.1%
浏览 25
已结题

关于#char#的问题,如何解决?(语言-c++)

入门cpp,在写该代码时出现如下情况,为什么直接输出却得到以下结果,是什么问题,望解答,感谢

#include <iostream>

using namespace std;

int main(){
    char b[3];
    for (int i=0;i<sizeof(b);++i){
        b[i]=char(97+i);
        cout << b[i];
    }
    cout <<endl;
    cout <<sizeof(b)<<endl;
    cout << b;
}

img

  • 写回答

3条回答 默认 最新

  • 七月星辰八月雪 2023-02-27 16:02
    关注

    sizeof()是根据字符串末尾的 “\0”来判断数组的大小的,你的 char b只能储存三个元素,存满之后没有位置放 "\0" ,sizeof就不能正确判断数组b的大小。数组越界是很危险的
    可以这样改

    #include <iostream>
    
    using namespace std;
    
    int main(){
        char b[4];
        for (int i=0;i<sizeof(b)-1;++i){
            b[i]=char(97+i);
            cout << b[i];
        }
        cout <<endl;
        cout <<sizeof(b)<<endl;
        cout << b;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月7日
  • 已采纳回答 2月27日
  • 创建了问题 2月27日

悬赏问题

  • ¥20 数学建模,尽量用matlab回答,论文格式
  • ¥15 昨天挂载了一下u盘,然后拔了
  • ¥30 win from 窗口最大最小化,控件放大缩小,闪烁问题
  • ¥20 易康econgnition精度验证
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能