据我所知,标准 strcmp 函数如下所示:
int strcmp(const char* string1, const char* string2)
{
while(*pString1++ == *pString2++)
{
if(*pString1 == 0) return 0;
}
return *pString1 - pString2;
}
我的问题是,这不会增加传递给 strcmp 的指针吗?在下面的示例中,它似乎会丢弃指针并导致发生无效的事情。
const char* string1 = "blah";
const char* string2 = "blah";
const char* string3 = "blah";
if(strcmp(string1, string2) {doSomething();}
// Won't this make string1 = "" because it incremented the pointer to the end?
else if (strcmp(string1, string3) {doSomethingElse();}
抱歉,我只是感到困惑,因为似乎如果我将一个指针传递给 strcmp,我不应该期望该指针突然包含一个空字符串。似乎 strcmp 应该采用 const char* const。我完全误解了什么吗?