迭代char**为什么这样做

iterate char** why does this work?

本文关键字:这样做 为什么 迭代 char      更新时间:2023-10-16

我获得了一段我复制到程序中的代码。对我来说,这似乎是一种迭代char**的新方法:

char** vArray;          // The array containing values
// Go throught properties
if(szKey == "KeyMgmt")
{
    vArray = (char**)g_value_get_boxed((GValue*)value);
    for( ; vArray && *vArray ; vArray++)  // Why does this work ?!
        pWpaKey->addKeyMgmt(std::string(*vArray));
}
else if(szKey == "Pairwise")
{
    // ...
}

看起来工作很有魅力,但我不明白为什么!vArray应该包含一个地址,对吗?而*vArray是"字符串"值。那么,为什么当我把一个地址和它的值"AND"时,这会给我一个等式呢?

vArray && *vArray等效于(vArray != NULL) && (*vArray != NULL)

它首先检查指针vArray不是NULL,并假设它不是NULL,检查它指向的指针不是NULL

循环条件为

vArray && *vArray

这基本上是的简写

(vArray != 0) && (*vArray != 0)

如果CCD_ 7指针是非空的并且指向非空的CCD_。