c语言中为什么字符数组长度可以等于字符串长度?难道str[5]中5不是数组长度吗?

c语言中为什么字符数组长度可以等于字符串长度?难道str[5]中5不是数组长度吗?

问题描述:

int main() {
char sir[5]={"hello"};

    return 0;
}

5是长度,你这么赋值是错误的。字符串结束符写到sir数组之外了,越界访问

sir[5]有5个字节,hello能完全放下,但是就没有位置给\0了。所以显示str的时候,可能会显示更多的字符。