我试图找出将数组初始化为全零的正确方法(即好像你已经在数组上做了一个memset).
我在堆栈溢出(和其他来源)的各个方面找到了以下方法:
char myArray1[10] = {0};
char myArray2[10] = {0,};
char myArray3[10] = {[0 ... 9] = 0};
char myArray4[10] = {0,0,0,0,0,0,0,0,0,0};
Run Code Online (Sandbox Code Playgroud)
我更喜欢最简单的语法变体......我使用的是{0},但我没有找到任何证明这实际上是正确的.
数组中缺少的元素将初始化为0.此外,C++允许您将统一初始化器保留为空.因此,以下工作是最小的,也是最有效的:
T array[N] = {};
Run Code Online (Sandbox Code Playgroud)
值得一提的,这适用于任何类型T它可以是默认构造或者初始化,而不仅仅是内建类型.例如,以下作品,将打印foo五次:
#include <iostream>
struct foo {
foo() { std::cout << "foo()\n"; }
};
int main() {
foo arr[5] = {};
}
Run Code Online (Sandbox Code Playgroud)