奇怪的双指针null检查

时间:2010-06-25 11:06:52

标签: c++ com atl

这是对函数

中传递的DOUBLE指针参数的有效空检查
if (!pdblValue) return E_POINTER;

4 个答案:

答案 0 :(得分:6)

是的,这是正常检查指针是非空的。

答案 1 :(得分:3)

在C ++中,“if”语句使用布尔表达式。如果它是 true ,它将执行条件块内的部分。如果 false ,则不会。

pdblValue是类型指针。否定它(!pdblValue)将给出一个长整数表达式,如果指针的值为NULL,则该值不同于零,否则为零。

这将被转换为布尔值,因为这是条件所需要的。不同于零的值将转换为true,将零值转换为false。

因此,它将具有与更自然形式相同的语义:

if (pdblValue == NULL) ...

您实际上在其中提供了一个布尔表达式 - 您实际意义上的那个。

答案 2 :(得分:1)

是。如果指针非零,则指针评估为“是”,就像C ++中的每个其他基本类型一样。

答案 3 :(得分:0)

假设pdblValue是一个指针,它在初始化时设置为NULL并且无效,那么是。