我拿起这段代码,将其复制到程序中。这似乎是我遍历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的“字符串”值。那么,为什么当我用其值“和”一个地址时却能给我带来平等的机会?

最佳答案

循环条件是

vArray && *vArray


这基本上是

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


如果char**指针为非null并指向非null的char*,则为true。

10-01 00:37