2012-03-20 80 views
1

我一直在试图找出如何添加一个数组到一个struct ...整数例如一个结构看起来像这里面:阵列++一个结构用C

struct test{ 
    int a; 
    int b; 
    int c; 
} test = {0,1,2}; 

但是如果我想以阵列为例:

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

这是可行的吗?卡片组的初始化发生在不同的功能中。当我不喜欢这样,我没有得到在struct一个错误,但我得到它,当我尝试,如果我这样做test.deck[i] = 1;使用它...例如,它给了我这个错误:

Error C2143 Syntax Error missing ';' before '.' 

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

任何人都可以写一个简单的结构,其中的变量是一个数组,然后只是用它来做一个简单的命令?

+0

请出示故障代码的一个完整的例子。 – 2012-03-20 23:10:18

+5

为什么要给变量赋予与其类型相同的标识符? – AusCBloke 2012-03-20 23:11:24

+1

是的,这是完全可行的。我不确定它为什么会对您造成问题。也许你可以发布更多的代码。 – 2012-03-20 23:11:28

回答

3

错误:

Error C2143 Syntax Error missing ';' before '.'

是由于test是一个类型名称。你需要定义一个实例:

int main() { 
    test mytest; 
    mytest.deck[1] = 1; 
    return 0; 
} 
+0

这是一个视觉工作室的事情吗?它适合我在这里工作。 – 2012-03-20 23:13:19

+1

他确实创建了一个实例。它碰巧和这个类型有相同的名字,这很愚蠢。 – 2012-03-20 23:18:26

2

如果这是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); 
} 

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

这编译:

#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); 
} 
+0

你的第二个例子正是OP在问题中的含义,不是吗? – 2012-03-20 23:23:03

+0

OP没有发布他使用该结构的代码。我认为这可能是错误的。在尝试对矢量进行索引之前,他是否宣布过我?那么,他要求一个可以编译的代码的例子,我把它给了他。 – Castilho 2012-03-20 23:26:50