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

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

#include 

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 <sizeof(b)<

img

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;
}

编译器问题,可能与默认对齐数有关吧,不用太在意。我这边出来正常

img