if(!pointer)和if(!* pointer)之间有什么区别?

时间:2018-03-25 05:32:07

标签: c++

我有以下代码:

const MyStruct* MyClass::MyMethod(void* *iter) {
    if (!iter)
        return NULL;
    if (!*iter) {
        // ...
两个条件之间有什么区别?

1 个答案:

答案 0 :(得分:3)

代码中的

iter引用指向void的指针(即指向void指针的指针)

!iter会检查iter所指的地址,如果iter持有NULL,则会返回true。

!*iter会检查iter所持有的地址中存储的值,如果是NULL,则会返回true。

通常,*运算符是取消引用运算符,它通过指针读取地址帮助中的值。