C++ 结构体中的数组

Gal*_*aum 2 c++

我一直在试图弄清楚如何将数组添加到结构中……例如,整数结构看起来像这样:

struct test{
    int a;
    int b;
    int c;
} test = {0,1,2};
Run Code Online (Sandbox Code Playgroud)

但如果我想要一个数组,例如:

struct test{
    int a;
    int b;
    int c;
    int deck[52];
} test;
Run Code Online (Sandbox Code Playgroud)

这是可行的吗?一副(纸牌)的初始化发生在不同的函数中。当我这样做时,我没有收到错误,struct但是当我尝试使用它时我得到了它......例如,如果我这样做,test.deck[i] = 1;它会给我这个错误:

Error C2143 Syntax Error missing ';' before '.'
Run Code Online (Sandbox Code Playgroud)

如果我要使用a,我可以写test.a = 1;

任何人都可以编写一个简单的结构,其中的变量是一个数组,然后将其用于简单的命令吗?

Cas*_*lho 5

如果这是 C++,不是 C,则在结构定义之后删除测试。

以下代码完美运行。

#include <iostream>

using namespace std;

struct Test {
  int a;
  int b;
  int c;
  int deck[52];
};

int main (int argc, char* argv[])
{
    Test t;
    t.deck[1] = 1;
    cout << "t.deck[1]: "<< t.deck[1] << endl;
    exit(0);
}
Run Code Online (Sandbox Code Playgroud)

问题:在C语言中,你把测试的定义创建一个变量名为test。所以在 C 中, test不是一种类型,它是一个全局变量,就像你写的那样。

这编译:

#include <iostream>

using namespace std;

struct Test {
  int a;
  int b;
  int c;
  int deck[52];
} test;

int main (int argc, char* argv[])
{
    test.deck[1] = 1;
    cout << "test.deck[1]: "<< test.deck[1] << endl;
    exit(0);
}
Run Code Online (Sandbox Code Playgroud)