我拿起了这段代码,我将其复制到我的程序中。这似乎是我通过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“字符串”值。那么为什么当我“和”一个地址及其价值时,这给了我一个平等的呢?
答案 0 :(得分:5)
vArray && *vArray
相当于(vArray != NULL) && (*vArray != NULL)
首先检查指针vArray
是否不是NULL
,并且假设它不是NULL
,检查它指向的指针不是NULL
。
答案 1 :(得分:3)
循环条件是
vArray && *vArray
这基本上是
的简写(vArray != 0) && (*vArray != 0)
如果char**
指针为非null并且指向非{null的char*
,则为true。