结构或类中的数组初始化
Posted
技术标签:
【中文标题】结构或类中的数组初始化【英文标题】:Array initialization within a structure or class 【发布时间】:2015-07-09 06:46:38 【问题描述】:我只是在学习结构和类。我创建了一个示例结构来熟悉它并尝试在其中初始化一个数组。当我编译程序时它给了我错误
error: expected ‘:’, ‘,’, ‘;’, ‘’ or ‘__attribute__’ before ‘=’ token
char arr[5] = 2,3,8,67,87;
struct abc
char a;
char b;
char c;
char arr[5] = 2,3,8,67,87;
;
struct abc xyz[5];
在声明结构和类时不允许数组初始化吗?
【问题讨论】:
我相信C
和C++
可能有不同的规则......选择一个。
即使你选择 C++,也要提到版本,因为它与答案有关。
我只是想知道这是否可能。任何版本的 C++ 都允许这样做。
选择一种单一语言。是的,C++ 从 C++11 开始就允许这样做。
好的,因为您坚持使用一种语言进行标记(无需等待适用于两种语言的答案),您的代码在 C++ 中运行良好,因为 C++11。见this example。
【参考方案1】:
我猜在 C 中你可以这样做:
struct abc
char a;
char b;
char c;
char arr[5];
;
struct abc test= 5, 2, 3, 'a', 'b', 'c', 'd', 'e' ;
【讨论】:
这是 c99 中的声明风格。使用它是否明智?【参考方案2】:在 C 中,您不能在结构定义中初始化结构的成员。当您声明该结构的变量时,您必须这样做。在 C++ 中,您可以将其作为构造函数的一部分。
【讨论】:
我认为我们不能在结构声明期间初始化成员,而不是定义,结构定义意味着为它分配空间并为其成员赋予一些价值。 @Subhajit 可以在结构定义中指定成员的值,以便在实例化结构时(在 C++ 中)成员获取这些值 @ juanchopanza,是的,我认为在 c++ 中这是可能的,但定义和实例化是相同的,我猜你的意思是结构声明 @Subhajit 我指的是结构类型的定义——它的主体。【参考方案3】:struct 中不允许完成数组初始化,但您可以在没有内容的情况下初始化数组的名称和类型。 在c++中
struct student
int age;
string name;
int scoreOf4subject[4];
;
当您需要在数组中设置 4 个主题的值时,它会是这样的:
student keny;
keny.scoreOf4subject=90,91,94,93;
【讨论】:
在 C++ 中,你可以做 OP 正在做的事情。见here。以上是关于结构或类中的数组初始化的主要内容,如果未能解决你的问题,请参考以下文章