考虑指向结构的指针
struct a_struct
{
int A;
};
可以这样做:
struct a_struct *ptr;
//...
if( ptr != NULL && ptr->A == 1)
{
//work with ptr struct
}
或者您应该在测试其字段的开启之前测试指针是否有效。
if(ptr != NULL)
{
if(ptr->A == 1)
{
//work with ptr struct
}
}
答案 0 :(得分:9)
是的,没关系。
&&
运算符在C中短路,因此ptr->A == 1
仅在ptr
为非空时才会被评估。
答案 1 :(得分:5)
&&
仅在第一个测试成功时评估第二个测试,因此您的代码(一个 if
语句)完全正常。
答案 2 :(得分:1)
这会奏效,实际上是一个相当普遍的习语。如果你写了一个else
条款,你必须担心哪个支票在那里被踢了,但这与任何其他多条件if
没有区别 - 检查。