據我所知,標準的strcmp函數看起來是這樣的: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。我完全誤解了什麼嗎?
你懷疑什麼,如果它是'會發生爲const char * string1';即通過參考。 – iammilind
請注意,要測試相等性,您必須檢查!strcmp(...)或strcmp(...)== 0. –