[英]why does passing char[] not work, but (deprecated conversion) char* does?
[英]iterate char** why does this work?
我拿起這段代碼,將其復制到程序中。 這似乎是我遍歷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
。
循環條件是
vArray && *vArray
這基本上是
(vArray != 0) && (*vArray != 0)
如果char**
指針為非null並指向非null的char*
,則為true。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.