如果我有这样的东西
if(pointer!=NULL&&(*pointer)==x) { ... }
如果指针为NULL,会不会出现段错误?如果它是特定于编译器的,我想知道它是如何在GCC中进行的。
答案 0 :(得分:10)
如果LHS false ,则不会评估RHS。因此,如果它是NULL
指针,它将永远不会命中RHS并尝试取消引用它。
答案 1 :(得分:1)
如果使用&&
,则仅在第一个条件为TRUE
时才会执行第二个条件。这绝不会导致分段错误。
我们也可以使用||
进行同样的检查。
if ((pstr_buf == NULL) || (pstr_buf[0] == '\0'))
{
printf("\ninvalid string buffer\n");
}