数组中的括号初始化C ++

Mr.*_*ent 0 c++ arrays initialization curly-braces

我想知道如何将值初始化为诸如数组的某些元素。

int arr[5]={3,5,6};
Run Code Online (Sandbox Code Playgroud)

以3的
索引为0,5的索引为2的方式,因此索引1被编译器跳过并自动分配值!

谢谢您的帮助!

for*_*818 5

以3的索引为0而5的索引为2。

那会是

int arr[5] = {3,0,5,6};
Run Code Online (Sandbox Code Playgroud)

因此索引1被编译器跳过并自动分配值!

您不能跳过中间的元素,只能跳过最后的元素

int arr[5] = {3,5,6};
Run Code Online (Sandbox Code Playgroud)

最后缺少的元素以0初始化。

请注意,您可以在C中实现所需的功能。cppreference的示例:

int n[5] = {[4]=5,[0]=1,2,3,4} // holds 1,2,3,4,5
Run Code Online (Sandbox Code Playgroud)

但是,这在标准C ++中还不可能吗?

PS:如果您不关心可移植性(实际上应该这样做),则可以阅读编译器手册,以了解它是否也允许在C ++中使用c样式的初始化。