char string0[]= "0123456789"; // sizeof(string0)=11
char string1[11]="0123456789A"; // sizeof(string1)=11
string1 的情况很清楚,为字符分配了 11 个字节加上 ' ' 的 1 个字节,并且 sizeof() 不计算终止符。
我不清楚 string0 的情况,为字符分配了 10 个字节,为 ' ' 分配了 1 个字节,因此 sizeof() 应该报告 10
为什么 sizeof() 在两种情况下都表示相同的大小?
sizeof() 不计算终止符”
sizeof
报告已分配内存的大小。
第一个是自动分配的,大小为 11,因为有 10 个字符和 NUL。第二个是手动分配的大小为11,其中填充了11个字符,没有NUL,因为没有空间;如果你尝试打印它,最多只会得到乱码。