我的功能如下:
char * s;
{
char * i = s, * t;
for(t = s;*t != NULL;t++)
if (*t == '/') i = t+1;
return i;
}
我得到的警告是指针和整数之间的比较。你怎么解决它?
答案 0 :(得分:6)
停止将NULL
视为一个字符,它应该是指针类型的常量。
您的循环标题应为:
for(t = s; *t != '\0'; ++t)
这是“过于明确”的写作方式,一些C程序员只想说明:
for(t = s; *t; ++t)
由于与'\0'
的比较与0的比较相同,这只是在评估表达式时隐含的。但是,我认为!= '\0'
有助于阅读,因为它清楚地说明了发生了什么,我们正在寻找字符串终结符'\0'
。任何理智的编译器都应该对这种比较进行简单的优化。