int array[] = {}
int array[length]
为什么我们不需要在第一个语法中加一个长度呢?
通过填写{},它是否设置了数组中已经存在的值?
如果未指定数组大小,则数组长度由初始值设定项确定,如下所示:
- 如果数组是字符类型的,初始化器可以是字符串文字(根据"宽"字符类型的需要加前缀)-在这种情况下,数组的大小是根据文字的长度计算的,考虑到字符串终止符(请注意,空字符串不是空初始化器-它至少包含一个元素,即终止符本身)
- 否则,数组将使用包含大括号的初始化程序列表进行初始化,数组大小计算如下:
- 如果没有指定的
[constant-expression] =initializer
形式的初始值设定项,那么数组的大小是根据初始值设定项数计算的-声明
将CCD_ 2定义为具有3个元素;int a[] = {1, 2, 3};
- 如果有一个或多个指定的初始值设定项,则数组的大小是从最大的指示符*或*初始值设定项数(以较大者为准)计算得出的-声明
将int a[] = {[2] = 3};
a
定义为具有3个元素,并且仅初始化第三个元素(前两个隐式初始化为0)
- 如果没有指定的
数组必须具有非零大小,并且空的初始值设定项在语法上无效-初始值设定值列表中必须至少存在一个初始值设定器。
当一个数组有初始化器时,可以省略大小,在这种情况下,数组的大小就是初始化器的数量。例如:
int array[] = { 1, 2, 3 };
上面的数组包含3个元素,因为初始化器列表中有3个元素。
您提供的缺少大小和空初始值设定项列表的特定语法无效,因为它将创建一个包含0个元素的数组。
在第一种情况下,您不必指定数组的大小,因为您将在{}中提供所需的元素。例如,如果你说:int array[]={1,2,3,4};这意味着数组的长度是4,您可以用整数填充表:1,2,3,4。在第二种情况下,您可以指定矩阵的大小。例如,如果说int array[10];这意味着您声明了一个int类型的数组,并且可以在矩阵中读取的整数的最大大小为10。
一个没有任何给定大小的数组,它是根据参数的数量自动生成的。
第一行分配一个空数组,使其长度为零,第二行分配可以容纳5个元素的数组。
需要注意的是,数组的大小和类型在声明后不能更改。
所以空数组实际上是无用的。