奇怪的双指针空检查

问题描述:

这是一个双指针参数的有效空检查在功能奇怪的双指针空检查

if (!pdblValue) return E_POINTER; 
+2

什么类型是DOUBLE? – sbi 2010-06-25 11:09:31

+0

如果其指针指向双精度型,则为yes;如果要比较由于舍入误差指针指向的内容,则为yes。 – 2010-06-25 11:26:52

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

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

这将被转换为布尔值,因为这是条件中需要的。与零值不同的值将被转换为true,并且零值被转换为false。

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

if (pdblValue == NULL) ... 

中,你实际上是提供了一个布尔表达式 - 一个你实际上的意思。

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

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

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