2008年1月6日星期日

烦人的size_t

纠结了我n久了,现在还是没有解开。现在姑且把它当成unsigned int的同义词。只要是因为ANSI C定义的strlen()的返回值为size_t,有点想不通,感觉上直接定义成unsigned int也没什么问题啊,反正字符串长度肯定>=0,任何无符号整形都可以,何必用size_t来面面俱到呢?难道是传说中的故弄玄虚?不管了。

看了一下glibc中的strlen.c,那个所谓“高效” 实现太复杂了,就我现在的水平还远不能看明白。还是OpenBSD的strlen.c的实现比较实在,如下:


size_t
strlen(const char *str)
{
const char *s;

for (s = str; *s; ++s)
;
return (s - str);
}


两个字符指针之差肯定是整数,因此,返回的那个值我就权当它是无符号整数了。 -______-|||

没有评论:

发表评论