警告:指针和整数之间的比较

时间:2013-11-26 08:43:41

标签: c++ c

我的功能如下:

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

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

    return i;
}

我得到的警告是指针和整数之间的比较。你怎么解决它?

1 个答案:

答案 0 :(得分:6)

停止将NULL视为一个字符,它应该是指针类型的常量。

您的循环标题应为:

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

这是“过于明确”的写作方式,一些C程序员只想说明:

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

由于与'\0'的比较与0的比较相同,这只是在评估表达式时隐含的。但是,我认为!= '\0'有助于阅读,因为它清楚地说明了发生了什么,我们正在寻找字符串终结符'\0'。任何理智的编译器都应该对这种比较进行简单的优化。