此结构数组中最后一项的意义

Significance of last item in this array of structs

myarray 中的最后一项如何有效?据说这是一个“空终止列表”。这是C代码。

typedef struct sFoo
{
    char *a;
    char *b;
} SFOO;

static SFOO my_sfoo_array[] =
    {
        { 0x1000, 0x2000 },
        { 0x3000, 0x4000 },
        { }        /* what?! */
    };

缺少的结构元素是否自动提供为 0,以便最后一个条目 { } 真的是 {0, 0}

这不是有效的 C 初始化

static SFOO my_sfoo_array[] =
    {
        { 0x1000, 0x2000 },
        { 0x3000, 0x4000 },
        { }        /* what?! */
    };

C 不允许空大括号。

在C++中是值初始化的意思。

所以在 C 中,这样写是正确的

static SFOO my_sfoo_array[3] =
    {
        { 0x1000, 0x2000 },
        { 0x3000, 0x4000 },
    };

在这种情况下,第三个元素的成员将由空指针初始化。 C 中的初始化程序定义为

initializer:
    assignment-expression
    { initializer-list }
    { initializer-list , }

如您所见,initializer-list 不是可选的。