【问题标题】:strange double pointer null check奇怪的双指针空检查
【发布时间】:2010-06-25 19:47:18
【问题描述】:

这是对函数中传递的 DOUBLE 指针参数的有效空检查吗

if (!pdblValue) return E_POINTER;

【问题讨论】:

  • DOUBLE 是什么类型?
  • 是的,如果它的指针指向一个双精度数,如果你想比较指针指向的内容,由于舍入错误。

标签: c++ com atl


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    这将被转换为布尔值,因为这是条件中需要的。非零值将转换为真,零值将转换为假。

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

    if (pdblValue == NULL) ...
    

    您实际上在其中提供了一个布尔表达式 - 您真正想要的那个。

    【讨论】:

      【解决方案3】:

      是的。如果指针不为零,则指针评估为“是”,就像 C++ 中的所有其他原始类型一样。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多