迭代char**为什么这样做
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是"字符串"值。那么,为什么当我把一个地址和它的值"AND"时,这会给我一个等式呢?
vArray && *vArray
等效于(vArray != NULL) && (*vArray != NULL)
它首先检查指针vArray
不是NULL
,并假设它不是NULL
,检查它指向的指针不是NULL
。
循环条件为
vArray && *vArray
这基本上是的简写
(vArray != 0) && (*vArray != 0)
如果CCD_ 7指针是非空的并且指向非空的CCD_。
相关文章:
- 为什么C++的文件 I/O 在读取文本文件时忽略初始空行?我怎样才能让它不这样做?
- 为什么在C++中对链表这样做?(像堆叠一样处理它们)
- C++ 如果在 if 为 true 之后运行,为什么还会这样做
- 为什么 arr[i++] 与 arr[i]++ 会这样做?
- ideone.com 为什么要这样做?
- std::字符串 's' 通过 '&s[0]' 转换为字符* - 如何/为什么这样做?
- 为什么在接受输入后循环退出时不会这样做
- 为什么我不能在未链接的 DLL 上调用方法,但可以这样做?C++
- 如何强制呼吁移动构造函数,为什么要这样做
- 为什么指针不能指向张贴增量,而可以这样做才能预先递增
- C++子字符串为什么这样做
- 为什么循环结束时不这样做?
- C++循环、作用域和堆栈(为什么这样做?
- C++为什么要这样做
- 为什么这样做?C中的字符指针
- 为什么static_cast不允许这样做
- 为什么编译器允许这样做
- 为什么内联模板专业化有帮助?我应该这样做吗
- C++中的字符串分配:为什么这样做
- 带有重载的显式模板函数专用化:为什么要这样做