当使用比元素更少的初始化器初始化自动结构体或数组时,了解由C 和 C 标准。
C标准定义了自动变量的两种初始化类型:完全初始化和不初始化。部分初始化是一个非标准术语,指的是仅初始化元素或成员的子集的情况。
C99 标准
在C99中,对于自动数组和结构体,如果初始化器比元素少,则其余元素隐式初始化相同作为具有静态存储持续时间的对象。这意味着对于整数类型,它们被初始化为 0。
C 03 Standard
在 C 中,对于自动数组和结构体,未初始化的成员是值初始化的。对于类类型,这意味着调用默认构造函数。对于像 int 这样的内置类型,它意味着零初始化。
在 C 中,用单个值初始化自动整数数组,例如:
int arr[10] = {123,};
将按照 C 的指定,将第一个元素初始化为 123,并将所有剩余元素初始化为 0标准。
大多数主流编译器都遵循 C 和 C 标准指定的部分初始化规则。但是,为了确保不同编译器之间的兼容性,建议显式初始化所有元素或成员。
以上是C 和 C 中如何处理部分初始化的自动结构和数组?的详细内容。更多信息请关注PHP中文网其他相关文章!