什么 !(char*)表示在C中

PTN*_*PTN 6 c pointers char

我在看一个例子,我看到了这个:

char *str;

/* ... */

if (!str || !*str) {
    return str;
}
Run Code Online (Sandbox Code Playgroud)

这是否意味着它是空的还是什么?

pus*_*kin 6

str是一个char指针.!否定它.基本上,!str将评估为真(1)时str == NULL.

第二部分是,str如果第一个字符是空字符('\0'),则表示(如果指向某些内容)评估为true(1 ) - 这意味着它是一个空字符串.

注意:
*str取消引用指针并检索第一个字符.这和做的一样str[0].