数组是如何在K&;中初始化的;R C?

数组是如何在K&;中初始化的;R C?,c,initialization,kernighan-and-ritchie,C,Initialization,Kernighan And Ritchie,在K&R C(第二)127p中 ANSI标准所做的主要更改是定义结构分配。结构可以复制并分配给函数,传递给函数,并由函数返回。大多数编译器多年来一直支持这一点,但现在已经精确定义了属性。自动结构和数组现在也可以初始化 “自动结构和数组现在也可以初始化”的含义是什么?我阅读。 写在261p(附录C变更汇总部分) 可以初始化自动结构、联合和数组,尽管是以受限的方式 我得到以下代码是不允许在K&R C(第一) 那么,你能解释一下当时数组和结构是如何初始化的吗?把“自动”放在“全局”还是“现在被初始化”

在K&R C(第二)127p中

ANSI标准所做的主要更改是定义结构分配。结构可以复制并分配给函数,传递给函数,并由函数返回。大多数编译器多年来一直支持这一点,但现在已经精确定义了属性。自动结构和数组现在也可以初始化

“自动结构和数组现在也可以初始化”的含义是什么?我阅读。
写在261p(附录C变更汇总部分)

可以初始化自动结构、联合和数组,尽管是以受限的方式

我得到以下代码是不允许在K&R C(第一)


那么,你能解释一下当时数组和结构是如何初始化的吗?
把“自动”放在“全局”还是“现在被初始化”放在“无法初始化”有点混乱。

据我所知,定义时的时间点初始化不允许用于结构,自动存储的联合和数组类型变量。必须使用单独的赋值语句为它们赋值。例如:

  • 对于数组,它将在元素上循环并逐个赋值
  • 对于结构,访问成员并分配它们

结构分配结构
指的是
{1,2,3}
{1,2}
<代码>可以初始化自动结构、联合和数组表示这些赋值结构可以用于数组(单词Automatic means)——这是块作用域变量的默认存储说明符。在,K&R C中,您可以使用
int a[3]
声明数组,然后通过循环遍历索引并将值分配给每个索引来分配值,以便为聚合对象和并集添加新的初始值设定项。谢谢!
int main()
{
    int a[3] = { 1, 2, 3 };
    struct { int a; char b; } x = { 1, 2 };
}