指定初始化器未命名的字段会发生什么?[英] What happens to fields not named by a designated initializer?

本文是小编为大家收集整理的关于指定初始化器未命名的字段会发生什么?的处理方法,想解了指定初始化器未命名的字段会发生什么?的问题怎么解决?指定初始化器未命名的字段会发生什么?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

在C99(而不是C ++中),可以使用此语法初始化结构:

struct info
{
    char    name[8+1];
    int     sz;
    int     typ;
};

struct info  arr[] =
{
    [0] = { .sz = 20, .name = "abc" },
    [9] = { .sz = -1, .name = "" }
};

未指定的字段会发生什么?

推荐答案

它们是归零的.从C99标准§6.7.8(初始化)/21,

如果支架封闭列表中的初始化器较少,则在rsting文字中的聚合元素或成员中,用于初始化已知大小的数组的元素或更少的字符,而不是数组中的元素,剩余的聚合应初始化与具有静态存储持续时间的对象相同.

本文地址:https://www.itbaoku.cn/post/359163.html