我想知道int array[10]={0}
如何真正起作用?
它是否像这样一直贯穿整个阵列?
for(int i=0;i<10;i++) array[i]=0;
或者效率更高?
答案 0 :(得分:2)
取决于变量的范围。
array
将被放置在.bss段中并在调用main
函数之前归零。它更快吗?在main
开始{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...]