静态结构初始化 C

Static structure initialization C

我已经阅读了一些关于 Whosebug 的答案,但我不知道为什么它仍然不起作用:

typedef struct gnl_struct {
    char        *data;
    int         where;
    int         status;
}               t_gnl;

void display_elem(t_gnl tab, int nbr)
{
    printf("tab[%d]\n", nbr);
    printf("tab.where == %d\n", tab.where);
    printf("tab.status == %d\n", tab.status);

    return ;
}

int     main()
{
    static t_gnl    tab[1000] = {{ "toto", 0, 2 }} ;

    display_elem(tab[3], 3);

    return (0);
}

结果是:

tab[3]
tab.where == 0
tab.status == 0

在您的代码中,您(您自己)仅初始化了 tab[0],而您正在传递 tab[3]。数组 [tab[1]tab[999]] 中的所有其他 元素 都被 auto 初始化为 0

您只初始化了第一个数组元素,因此其余元素将隐式填充为 0。现在,当您尝试打印第三个元素时,它将为零。