zz从最简单但又最绝妙的开始:strcmp
来源:互联网 发布:ubuntu软件源 编辑:程序博客网 时间:2024/05/29 07:20
分析经典代码是一种最佳方式,将从最简单但又最绝妙的开始:strcmp
int __cdecl strcmp (
const char * src,
const char * dst
)
{
int ret = 0 ;
while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
++src, ++dst;
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return( ret );
}
这是MS C run-time中的strcmp实现源码。几个问题将揭示它的精髓,会对我们写出相应功能的高质量代码提供指导。
1.src和dst都为空串如何返回?
2.为什么要用unsigned char*强制转换?
3.可否用*src替换*dst作为while条件?
4.是否是multithread-safe?
5.能否用于multibyte-character strings的比较?
6.能否用更少行表达?
仔细回答了这些问题之后,你会发现思路是否开阔了一些?希望有这种效果。
- zz从最简单但又最绝妙的开始:strcmp
- 从最简单开始的正则学习
- 从最基本的开始
- 复习java:从最简单的小程序开始
- 学习O/RM,从最简单的例子开始...之一
- 最简单的内核模块编程 -- 一切从这里开始
- MINI2440 先从最简单的 LED 及 按键 开始!
- 从最简单的开始学习JAVA【HelloWorld】...
- jqeury练习手写从最简单的开始
- 从最简单的例子开始学习网站设计
- 从最简单的源代码开始,切勿眼高手低---(第一波)
- 从最简单的开始---配置jdk环境变量
- Spring Boot(1),从最简单的开始
- MySQL优化-----从最简单的语句优化开始
- c语言入门编程 从最简单的开始
- apk破解(一)从最简单的判断开始
- 学习SpringMVC——从最简单的开始
- Python模拟登录QTCN(从最简单的开始)
- operator new、malloc、HeapAlloc分配内存有何不同?
- http下载文件
- C++内存对象大会战
- 你会说“对不起”吗
- VC中利用多线程实现线程间通信
- zz从最简单但又最绝妙的开始:strcmp
- Oracle 9i修改字符集为UTF8的方法(中文)
- 如何成为一个受欢迎的项目经理
- 软件系统开发中的组件框架技术研究、设计和应用
- SQL2000出现未能建立与(local)的连接的解决办法
- PLC及PC与RFID射频识别读写器串行通讯的实现
- google苏州地图
- spring入例(1)
- 局部刷新