关于字符串char name[1]

为什么char name[ ]中数字为1时也能输出好几个字?超过可储存的字符数会有什么危险?

数字为1的时候,name只有一个字符,但是因为没有\0作为结束符,所以name后面的内存中有数据的话仍然会显示。但是name后面内存中的内容是什么东西是不确定的,这些字符不是name中的内容。是name后面的内存中的数据。

如果你存储了超过字符串数组长度的字符串,则超出的部分可能会覆盖其他局部变量的值,造成程序出现未知错误
比如在如下程序中,如果输入"123456",则字符串会将字符变量a的值覆盖
有帮助望采纳~

#include <stdio.h>
int main(int argc, char const *argv[])
{
    char a = 'm', b[5];
    scanf("%s", b);
    printf("%s\n%c", b, a);
}

img