我选择了这段代码并将其复制到我的程序中。这对我来说似乎是一种遍历 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 != NULL) && (*vArray != NULL)
它首先检查指针 vArray
是否不是 NULL
,并且假设它不是 NULL
,检查它指向的指针不是 NULL
。
关于c++ - 迭代 char** 为什么这行得通?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8758887/