2012-03-20 66 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