我想知道 str == NULL
和 str[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/