空字符串在C ++中包含什么

时间:2013-01-28 05:29:44

标签: c++

以下代码

#include <stdio.h>
int main( int argc, char** argv ) 
{
    const char *s = "";
    if (s == '\0') {
        int x = 0;
    }
    return 0;
}

它不会进入循环。为什么? ,

3 个答案:

答案 0 :(得分:4)

您已将s定义为char的指针。碰巧,'\0'是一个整数常量表达式,其值为0 - 空指针常量的定义。

IOW,你做的相当于if (s == NULL)。由于s实际指向字符串文字,因此它不是空指针,因此比较为假。

我猜你的意图是if (*s == '\0') ...,应该比较为真。

答案 1 :(得分:2)

尝试

   if (*s == '\0') {
        int x = 0;
    }

您想要比较s的值,而不是它的内存地址。

答案 2 :(得分:1)

s是一个指针,此版本比较指针

const char *s = null;
if (s == '\0') {
    int x = 0;
}
return 0;

并且此版本比较字符串的第一个元素以检测空字符串:

if (s[0] == '\0') {
   int x = 0;
 }