0
之間的比較,我有這樣一個功能:警告:指針和整數
char * s;
{
char * i = s, * t;
for(t = s;*t != NULL;t++)
if (*t == '/') i = t+1;
return i;
}
我得到的警告是指針和整數之間的比較。如何解決它?
之間的比較,我有這樣一個功能:警告:指針和整數
char * s;
{
char * i = s, * t;
for(t = s;*t != NULL;t++)
if (*t == '/') i = t+1;
return i;
}
我得到的警告是指針和整數之間的比較。如何解決它?
停止將NULL
作爲字符處理,它應該是一個指針類型的常量。
你的環頭應該是:
for(t = s; *t != '\0'; ++t)
這是寫它的「過於明顯」的方式,一些C程序員瞄準最大簡潔只想說:
for(t = s; *t; ++t)
由於比較到'\0'
與0相比是相同的,這只是在評估表達式時隱含的。不過,我認爲!= '\0'
有助於閱讀,因爲它明確了發生了什麼,我們正在尋找字符串終結符'\0'
。任何理性的編譯器都應該對比較進行優化。
而不是'* t!= NULL',你應該有'* t!='\ 0''。 –
必須說,我從來沒有見過這樣的功能。那是c語法嗎? – smac89
@ Smac89這不是函數聲明,而是合法的C語法,'{}'創建一個塊。 –