一道关于字符数组的问题
char p[]={'a','b','c'},q[10]={'a','b','c'}; printf("%d%d\n",strlen(p),strlen(q)); strlen函数是求字符串的实际长度(不包含结束标志),并且作为函数值返回。 但是q[10]={'a','b','c'};中从第四位到第十位应该为0,那么0就不算是字符串的长度嘛?
char p[]={'a','b','c'},q[10]={'a','b','c'}; printf("%d%d\n",strlen(p),strlen(q)); strlen函数是求字符串的实际长度(不包含结束标志),并且作为函数值返回。 但是q[10]={'a','b','c'};中从第四位到第十位应该为0,那么0就不算是字符串的长度嘛?
答案:如果是整形数组,0当然算长度,字符数组就不是了。
因为字符数组遇到\0表示结束啦。
不过提醒你 ‘0’是算长度的,也就是说
char p[] = {'a' , 'b' , 0 ,'c'};与
char p[] = {'a' , 'b' , '0' , 'c'};是不一样的,前者输出是ab,后者输出是ab0c;
其他:结束标志 '\0' 的ascii码是 0
所以 0 就是 结束标志 '\0'
所以........... 0其实就是NULL也就是空,是字符串的结束符。