#include <stdio.h>
#include <string.h>
int main()
{
char name[]="z"; // 7行
char name2[]={'0','6','z'}; // 8行
int size=strlen(name2);
printf("%d\n",size);
return 0;
}
输出的是5
如果在7行8行之间插入:char name1[]={'0','6','z'};
输出就真的变成了9,
说明你说的 是不是在连接两个数组的时候把\0也计算在内 可能是对的。
但是我认为应该不是\0,因为strlen在遇到\0,时就会停止计算,我认为是在name1 name2中有一个不知道是什么的占据了一个字节,才会让结果偏大。
比如第一次计算的结果是5,应该是char name2[]={'0','6','z'}中占据了4个字节,但是没有\0所以不会停下来,继续计算char name[]="z";占据 1个字节 ,“”中有隐含的\0停止计算。4+1当好等于5.
等于9 的结果也能按这样的方法计算,结果也对的上。但是为什么char name2[]={'0','6','z'}占据4个字节,我就没法解释了。
我是新手 ,这是我的理解,如果不对,希望不要吐槽。谢谢! |