一个让人疏忽的例子
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')
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) 收藏 举报
浙公网安备 33010602011771号