为什么没有 '\0' 的 strlen 工作正常?
Why is strlen working fine without '\0'?
如标题,我对在 c 中使用 char* 有一些疑问。例如,如果我写这个
char *a = calloc(5, 5);
a[0] = '1';
a[1] = '1';
a[2] = '1';
a[3] = '1';
a[4] = '1';
printf("a = %s, length = %d", a, strlen(a));
输出为
a = 11111, length = 5
为什么没有 '\0' 的 strlen 工作正常?有人可以帮我理解吗?
calloc(5, 5)
分配并清零 25 个字节。您分配了其中的前五个,但第六个仍然是 '[=11=]'
。
如标题,我对在 c 中使用 char* 有一些疑问。例如,如果我写这个
char *a = calloc(5, 5);
a[0] = '1';
a[1] = '1';
a[2] = '1';
a[3] = '1';
a[4] = '1';
printf("a = %s, length = %d", a, strlen(a));
输出为
a = 11111, length = 5
为什么没有 '\0' 的 strlen 工作正常?有人可以帮我理解吗?
calloc(5, 5)
分配并清零 25 个字节。您分配了其中的前五个,但第六个仍然是 '[=11=]'
。