c++ - 迭代 char** 为什么这行得通?

标签 c++ arrays pointers glib

我选择了这段代码并将其复制到我的程序中。这对我来说似乎是一种遍历 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/

相关文章:

c++ - 动态包含类文件

C++ 宏从 .cpp 初始化在 .h 中声明的变量

c - malloc 结构指针数组

c - 在 C 中的结构中指向 char* 的指针

c - 这种使用间接寻址的方式正确吗?

c++ - 确定没有 EXIF 数据的图像之间的停止差异

c++ - 我如何从没有复制构造函数的函数返回一个类?

c - 二维和一维数组中指针的区别

Java 基本数组 List.contains 无法按预期工作

c - 带二维数组的指针