再讲之前先说一下以下两个字符数组的区别
1.char ch1[] = {"abcdef"} ;
2.char ch2[] = { 'a' , 'b' , 'c' , 'd' , 'e', 'f' };
数组ch1,是一个双引号括起来的连续字符串,有"\0"结尾,而第二个ch2是单引号没有"\0"结尾。
而一个字符数组的结束是遇到"\0",这就表示你不知道ch2什么时候结束。
了解完上面的两个数组之后我们再说下strlen和sizeof求字符串之间的区别。
strlen计算一个数组的长度是遇到"\0"停下来,并且"\0"是不参与长度计算的,那么strlen(ch1)的长度就是6,而strlen(ch2)就是一个随机值或者出错运行不起来。
sizeof计算一个字符数组的长度除了能看见的还包括看不见的"\0",所以ch1有"\0"长度为7,而ch2没有"\0",只能看见6个字符所以为6。代码和警告在下面可以看下