c - C中的str==NULL和str[0]=='\0'有什么区别?

标签 c pointers gcc cstring

我想知道 str == NULLstr[0] == '\0' 之间的区别:

int convert_to_float(char *str, double *num)
{
    if ((str == NULL) || (str[0] == '\0'))
        return(-1);

    *num = strtod(str, (char **)NULL);
    return(0);
}

我在 Linux 上使用 gcc。

最佳答案

str==NULL 告诉您指针是否为 NULL。

str[0]=='\0' 告诉您字符串是否为零长度。

在该代码中,测试:

if ((str == NULL) || (str[0] == '\0'))

用于捕获它为 NULL 或长度为零的情况。


请注意,短路在这里起着关键作用:测试的重点是确保 str 是长度至少为 1 的有效 C 字符串.

  • 第二个测试 str[0] == '\0' 仅在 str 不为 NULL 时有效。
  • 因此,第一个测试str == NULL需要在str为NULL的时候提前跳出。

关于c - C中的str==NULL和str[0]=='\0'有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8321459/

相关文章:

c - 由于变量导致的内存添加是在 while 循环中初始化的

java - c JNI调用java函数

C、char** 奇怪的输出

c - 查找内存C中指针的值

c - 跟踪/包装开放系统调用

gcc - 在 64 位 (x86-64) 机器上构建 32 位 (x86) gcc-10.2.0 时出错

c - libevent 在收到数据包时触发 send

c - 用整数表示 float

c++ - 链表深拷贝构造函数中的指针永远不会达到 null

gcc与cmake编译的编译区别——ldd命令