静态结构初始化C.

时间:2015-04-23 14:36:07

标签: c struct initialization

我已经在stackoverflow上读了一些答案,但我不知道为什么它还没有工作:

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

2 个答案:

答案 0 :(得分:4)

在您的代码中,您(您自己)仅限tab[0],并且您已通过tab[3]。数组[tab[1]tab[999]]中的所有其他元素自动已初始化为0

答案 1 :(得分:0)

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