条件和指针

时间:2013-01-08 10:57:47

标签: c conditional-statements

如果我有这样的东西

    if(pointer!=NULL&&(*pointer)==x) { ... }

如果指针为NULL,会不会出现段错误?如果它是特定于编译器的,我想知道它是如何在GCC中进行的。

2 个答案:

答案 0 :(得分:10)

不,因为short circuit evaluation

如果LHS false ,则不会评估RHS。因此,如果它是NULL指针,它将永远不会命中RHS并尝试取消引用它。

答案 1 :(得分:1)

如果使用&&,则仅在第一个条件为TRUE时才会执行第二个条件。这绝不会导致分段错误。

我们也可以使用||进行同样的检查。

if ((pstr_buf == NULL)  || (pstr_buf[0] == '\0'))
{
   printf("\ninvalid string buffer\n");
}