bru*_*tto 3 c++ arrays struct initialization braces
还行吧:
int vec_1[3] = {1,2,3};
Run Code Online (Sandbox Code Playgroud)
那有什么不对
struct arrays{
int x[3];
int y[3];
int z[3];
};
arrays vec_2;
vec_2.x = {1,2,3};
Run Code Online (Sandbox Code Playgroud)
这给出了
错误:无法在赋值时将'<brace-enclosed initializer list>'转换为'int'
我已经阅读了很多关于此错误的帖子,但目前还不清楚问题出在哪里.
首先是初始化.第二种是尝试分配,但是数组不可分配.
你可以这样做:
arrays vec_2 = {{1,2,3}, {3,4,5}, {4,5,6}};
Run Code Online (Sandbox Code Playgroud)
如果您只想初始化vec_2.x,那么您可以省略其余的初始值设定项:
arrays vec_2 = {1,2,3};
Run Code Online (Sandbox Code Playgroud)
在这种情况下,其余部分vec_2将被初始化为包含零.
虽然您必须在初始化程序周围包含至少一组大括号,但如果您不想要,则不必包含"内部"大括号.包括它们可以给你一点额外的灵活性.例如,如果要初始化vec_2.x中的前两个项目和vec_2.y中的第一个项目,可以使用:
arrays vec_2 = {{1,2}, {3}};
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您将被vec_2设置为就像您用作{1, 2, 0, 3, 0, 0, 0, 0, 0};初始化程序一样.