在执行char str[10]=“china\n\0";strlen(str)的结果是

能不能在具体点

char str[10]=“china\n\0";给定了初始化表达式,且初始化列表中字符小于定义的char数组的元素个数10,所以之后的部分被隐式初始化为0,str的内存布局为:
{'c','h','i','n','a','\n','\0',0,0,0}。事实上作为char而言字符串结束符'\0'和0是同一个字符(char的每个位为0),str[0]到str[6]是一个合法的字符串,其中str[0]到str[5]是非0字符,str[6]是结束符。于是可以确定str中前6个char非0,后4个char等于0。而strlen对于给定的字符指针,依次检查每个char,如果发现等于0则返回给定指针到这个0元素之间的元素个数并返回。从&str[0]这个位置开始,第一个0元素的位置为&str[6],这样,结果是&str[6]-&str[0],等于6。
====
[原创回答团]

参考资料:原创

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-25
strlen(str)应为6 ,因为'\n'在这作为一个转义字符则算是一个字符计入再加上china就是6个,而'\0'代表着一个字符串的结束,在这不计入长度中
第2个回答  2010-06-25
char str[10]=“china\n\0";strlen(str)的结果是
strlen(str)=6
相似回答