- 论坛徽章:
- 0
|
这帖子还不沉啊,那就再说几句。
那个叫什么链式的,真是又难看,又不能提高效率。
如果是重载处理字符序列的,返回长度的好处是很多的。
其实,就是什么链式的,返回长度也是优于返回首指针的。
- l = mystrcpy( d1, s );
- memcpy( d2, s, l+1 );
- memcpy( d3, s, l+1 );
- ...
复制代码
在效率上最少也会有20-30%的提升,有的系统下会超过50%。
最关键的是,返回长度不需要额外开销。
- size_t /*char * */
- mystrcpy( char *des, char *src )
- {
- char *p = des;
- while( *p++ = *src++ );
- return( p - des - 1 ); /* return( des ); */
- }
复制代码
一般来说,要找到字符串的首指针用一个指令就行了,而要找出字符串的长度,就需要很多指令,而且着些指令中还包含了大量的条件指令,会增加很多系统开销。
返回长度能提供的好处:
1、显著提高效率
2、保持以负数表示函数调用失败的方式
3、能处理不以'\0'结束的字符序列,隔离函数实现细节(这在处理大字符流,而又不想写一个很长函数的时候是非常方便的)
而这只需要牺牲什么链式表达,值不值得只有你自己判断了。 |
|