【发布时间】:2011-08-31 22:56:10
【问题描述】:
有什么区别吗,比如
int array[]={1, 2, 3, 4, 5};
和,
int array[5]={1, 2, 3, 4, 5};
编译器需要自己计算第一种情况的元素数量,这可能需要一些时间({...} 1234332534 个元素),所以第二种情况比第一种更有效?
【问题讨论】:
-
“1234332534 个元素的数组”——在堆栈上分配大约 4GB(12 亿整数)可能很麻烦。通常的堆栈大小约为几兆字节。除此之外,没有理由使用一种方法而不是另一种方法,因为如果有任何开销,它只会在编译时发生。
-
相对于编译的其余部分而言,“计算”元素所花费的时间并不明显——事实上,即使是第二种形式,它也必须计算在内,我认为(报告错误),无论如何它都会处理相同数量的元素。
int arr[2] = {1, 2, 3};-- 错误?