是否有任何区别,例如array [n]和array []之间的区别?
int array[]={1, 2, 3, 4, 5};
和,
int array[5]={1, 2, 3, 4, 5};
编译器需要由自对第一种情况下,计算元件的数量,并且,可以采取一个一定的时间(的{...}
1234332534元素),所以第二种情况比第一种情况更有效率?
是否有任何区别,例如array [n]和array []之间的区别?
int array[]={1, 2, 3, 4, 5};
和,
int array[5]={1, 2, 3, 4, 5};
编译器需要由自对第一种情况下,计算元件的数量,并且,可以采取一个一定的时间(的{...}
1234332534元素),所以第二种情况比第一种情况更有效率?
此数组的声明:
int array[] = {1, 2, 3, 4, 5};
是完全相同为:
int array[5] = {1, 2, 3, 4, 5};
元件的数量是在编译时计算出,所以有与该相关联的没有运行时成本。
第一声明的优点是,它不需要程序员手动计数元件的数量,所以它的在这个意义上更有效的数组声明。
没有区别,除了你,程序员,没有以确定有多少元素在数组中。编译器仍然会计算元素以分配适当的数量,所以两者都需要编译器有相同的时间来编译。
†。另一方面,全球大阵列是如何将二进制资源包含在固件中以便闪存到嵌入式设备上的。但我不认为任何人都会考虑这种蛮力方法来处理大于几MB的任何事情。
+1。 :)(15个字符) –
在第二种情况下,如果初始化内存的值数量错误,预编译器将捕获错误。这是非常多的。
不正确。 '[]'中的数字可能大于初始化列表的大小;在这种情况下,假定剩余区域被初始化为零。 –
允许提供比数组大小更少的元素,其他元素都是零初始化的。而预编译器不涉及这里,检查是由实际的编译器完成的。 –
“1234332534元素数组” - 在堆栈上分配大约4GB(12亿整数)可能会很麻烦。通常的堆栈大小只有几兆字节。除此之外,没有理由使用另一种方法,因为如果有任何开销,它只会在编译时发生。 – Damon
“计数”元素所花费的时间与编译的其他部分相比并不明显 - 事实上,即使在第二种形式中,我也认为(要报告错误),并且在任何情况下它会处理相同数量的元素。 'int arr [2] = {1,2,3};' - errm? – 2011-08-31 23:03:04