eastcowboy

 

一个让人疏忽的例子

char str[]="ab\01234";
sizeof(str)=?
strlen(str)=?
我相信不少人不以为sizeof(str)=8,stlen(str)=2
事实上是sizeof(str)=6,strlen(str)=5
为什么是这个结果呢
由于C编译器采用的是“贪心”法则,
字符串中的‘\0’不是字符串的结束符,而‘\0’会同12组成\012,它代表一个八进制ASCII码数表示的字符,
所以定义的字符串真正含有的确是6个字符('a','b','\012','3','4','\0')


posted on 2009-10-06 21:34  eastcowboy  阅读(293)  评论(1)    收藏  举报

导航