写了mycmp函数,想知道运行结果是怎么来的



```c

#define  _CRT_SECURE_NO_WARNINGS
#include ;
#include;

int mycmp(char const* s1, char const* s2)
{
    while (*s1 == *s2 && *s1 != '\0')
    {
        s1++;
        s2++;

    }
    return *s1 - *s2;
    printf("%d", *s1 - *s2);
}
int main(int argc, char const* argv)
{
    char s1[] = "a,b,c";
    char s2[] = "a,b,c,d";
    /*printf("%d", strcmp(s1, s2));*/
    printf("比较s1s2大小%d", mycmp(s1, s2));
        mycmp(s1, s2);
        return 0;
}
//问题一:运行结果是-44,想知道原因
//问题二:*s1,*s2的含义是什么
//这里s1,s2不是指针为什么也可以这样学
//(我用的是visual stdio 编译器,文件名是cpp.)


```

这里主要涉及几个知识点:
1:c语言字符串的概念,你要知道字符串默认以\0终结
2:指针的相关概念,函数传参传指针,如果对指针进行运算以及取指针中的值
3:你要知道字符的概念,以及assii码相关,字符底层其实8bit 存储的还是0和1字符,本身是数字,然后根据assii码表转成对应字符,你可以详细了解这块,如果对字符进行运算,其实就是根据assii码表取值进行计算的。

img

为啥你只管*s1 != '\0' ,但不管 * s2 != '\0'呢??
while循环就是逐个判断两个字符串中对应序号的字符是否一样,如果一样,则继续判断下一对字符是否一样。如果不一样,那么当前不一样的字符哪个更大,说明哪个字符串就更大