venj's blog
翻墙写博客的日子
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);
}
两个字符指针之差肯定是整数,因此,返回的那个值我就权当它是无符号整数了。 -______-|||
没有评论:
发表评论
较新的博文
较早的博文
主页
订阅:
博文评论 (Atom)
没有评论:
发表评论