2010-06-25 43 views
1

這是一個雙指針參數的有效空檢查在功能奇怪的雙指針空檢查

if (!pdblValue) return E_POINTER; 
+2

什麼類型是DOUBLE? – sbi 2010-06-25 11:09:31

+0

如果其指針指向雙精度型,則爲yes;如果要比較由於舍入誤差指針指向的內容,則爲yes。 – 2010-06-25 11:26:52

回答

3

在C++中,「if」語句使用布爾表達式。如果它是true,它將執行條件塊內的部分。如果它是虛假,它不。

pdblValue是類型指針。否定它(!pdblValue)會給出一個長整型表達式,如果指針的值爲NULL,則該表達式不爲零,否則爲零。

這將被轉換爲布爾值,因爲這是條件中需要的。與零值不同的值將被轉換爲true,並且零值被轉換爲false。

因此,這將具有比更自然的形式相同的語義:

if (pdblValue == NULL) ... 

中,你實際上是提供了一個布爾表達式 - 一個你實際上的意思。

1

是過去了。如果指針非零,則指針評估爲「是」,就像C++中的每個其他基元類型一樣。

6

是的,這是正常檢查指針是非空的。

0

假設pdblValue是一個指針,並且在初始化時設置爲NULL,並且無效,那麼是的。