静态结构初始化 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。现在,当您尝试打印第三个元素时,它将为零。
我已经阅读了一些关于 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。现在,当您尝试打印第三个元素时,它将为零。