c++ - 警告 : comparison between pointer and integer

标签 c++ c

我有这样的功能:

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'。任何理智的编译器都应该对这种比较进行微不足道的优化。

关于c++ - 警告 : comparison between pointer and integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20212097/

相关文章:

c++ - 如何使用 Gtkmm 获取光标位置?

c - 双指针和结构

c - 如何强制在 C 中读取未被优化的未使用内存?

c - 使用带有 CG 和 openGL 的统一一维纹理参数时出错

c++ - 链接时, "grab what you need"和 "grab all"(-Wl,--whole-archive) 之间有什么东西吗?

c++ - SFINAE,演绎与实例化

将 va_list 转换为固定参数

c - x86_64-linux-gnu : Why is stack pointer subtracted from?

c++ - 程序崩溃并出现 'std::out_of_range' 错误

c++ - 3d 数组索引上的迭代器