为什么有时对字符串进行两次检查?

k99*_*k99 1 c null-pointer

我看到了以下代码:

char *str;
// Some code
if (! str || ! *str)
    return str;
Run Code Online (Sandbox Code Playgroud)

为什么需要检查! *str?还if (! str)不够吗

das*_*h-o 5

这取决于您要检查的内容:

  • 该!str检查是str为NULL。
  • 的!*str检查,在第一个字符str是NUL字节(“\ 0”)

结合起来,如果s为NULL或s指向NUL char,它们将返回's'。