[英]Difference between array[n] and 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的任何东西。
没有区别,除了你,程序员,不必确定数组中有多少元素。 编译器仍然会计算元素以分配适当的数量,因此两者都需要编译器使用相同的时间来编译。
在第二种情况下,如果给出错误的值来初始化存储器,则预编译器将捕获错误。 这就是它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.