C / C ++:int数组[10] = {0}如何工作?

时间:2017-09-15 13:21:22

标签: c++ c arrays initialization

我想知道int array[10]={0}如何真正起作用?

它是否像这样一直贯穿整个阵列?

for(int i=0;i<10;i++) array[i]=0;

或者效率更高?

2 个答案:

答案 0 :(得分:2)

取决于变量的范围。

  1. 全局范围 - array将被放置在.bss段中并在调用main函数之前归零。它更快吗?在main开始
  2. 之前进行归零肯定会有所不同
  3. 本地范围 - {0}初始化将更快地进行IMO,因为这些内部例程已针对特定硬件进行了优化。我用gcc和amp测试了VS和它更快 - 但当然不能保证你的编译器会以同样的方式做到这一点。 https://godbolt.org/g/JdTPHJ

答案 1 :(得分:2)

使用{0}是C ++中最容易引起误解的事情之一。

int array[10]={n1, n2, n3};

这将使用{}中的值填充前三个元素。数组的其余部分将使用默认值初始化 - 对于int。

int array[10]={1}; // [1, 0, 0, 0...]

使用

更好
int array[10]={}; // [0, 0, 0, 0...]