小菜韩 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日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题