Is there any difference between, for example
int array[]={1, 2, 3, 4, 5};
而且,
int array[5]={1, 2, 3, 4, 5};
编译器需要自己计算第一种情况的元素数量,这可能需要一些时间(1234332534个元素的{...}),所以第二种情况比第一种更有效?
Is there any difference between, for example
int array[]={1, 2, 3, 4, 5};
而且,
int array[5]={1, 2, 3, 4, 5};
这个数组声明:
int array[] = {1, 2, 3, 4, 5};
与此完全相同:
int array[5] = {1, 2, 3, 4, 5};
元素的数量在编译时计算,因此不会有与此相关的运行时成本。
第一种声明的优点是不需要程序员手动计算元素的数量,因此从这个意义上说,它是更有效率的数组声明。
[]
中的显式元素数量与{}
之间的初始化器数量相同,就没有区别。[]
中的数字。如果超过了,则会出现错误。 - wallyk[]
中的数字大于,则会有区别,因为它将强制创建额外的默认初始化(或在C中初始化为零)元素。 - AnT stands with Russia†. 另一方面,大型全局数组通常是固件中二进制资源的包含方式,以便将其闪存到嵌入式设备上。但我认为,任何超过几MB的东西都不应该考虑这种简单粗暴的方法。
[]
中的数字可能大于初始化列表的大小;在这种情况下,剩余的区域被假定为初始化为零。 - Billy ONeal