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 );
}

strcmp的实现函数如上,比较的是两者的ASCII码,可以看出它一直比较到第一个不相同的字符,或者是第一个字符的结尾。NULL的ASCII值是0,(空格的ASCII值是32),这提醒我们,是两个长度不一的字符串, 如果 能一起比较到某个字符串的结尾,那么长度较短的字符串的是比较“小”的,因为NULL的ASCII值是最小的。这也符合字典的排列顺序。

你可能感兴趣的:(null,DST)