2013-11-26 249 views
0

之間的比較,我有這樣一個功能:警告:指針和整數

char * s; 
{ 
    char * i = s, * t; 

    for(t = s;*t != NULL;t++) 
     if (*t == '/') i = t+1; 

    return i; 
} 

我得到的警告是指針和整數之間的比較。如何解決它?

+3

而不是'* t!= NULL',你應該有'* t!='\ 0''。 –

+0

必須說,我從來沒有見過這樣的功能。那是c語法嗎? – smac89

+0

@ Smac89這不是函數聲明,而是合法的C語法,'{}'創建一個塊。 –

回答

6

停止將NULL作爲字符處理,它應該是一個指針類型的常量。

你的環頭應該是:

for(t = s; *t != '\0'; ++t) 

這是寫它的「過於明顯」的方式,一些C程序員瞄準最大簡潔只想說:

for(t = s; *t; ++t) 

由於比較到'\0'與0相比是相同的,這只是在評估表達式時隱含的。不過,我認爲!= '\0'有助於閱讀,因爲它明確了發生了什麼,我們正在尋找字符串終結符'\0'。任何理性的編譯器都應該對比較進行優化。