2014-11-04 54 views
0

你好,我必須做一個程序使用結構數組..我必須在函數中初始化它。下面我正在嘗試,但我的原型不斷收到錯誤「預期的主要表達式」..我已經遵循教程,但不能弄清楚什麼即時做錯了請幫助。我不能使用指針或載體..只是基本的東西,感謝您的時間函數參數中的struct C++數組根本不工作

struct gameCases{ 

bool flag = false; 
int casenum; 
double value; 
}; 
int initialize(gameCases cases); //prototype 

---主()

gameCases cases[26]; 
initialize(cases); //call 

int initialize(gameCases cases) //definition 
{ 
double values[26] = {.01, 1, 5, 10, 25, 50, 
       75, 100, 200, 300, 400, 500, 750, 1000, 
       5000, 10000 , 25000, 50000, 75000, 100000, 
       200000 , 300000, 400000, 500000, 
       1000000, 2000000}; 

for (int i = 0; i < 26; i++) 
{ 
    array[i].value = values[i]; 
} 
} 

回答

0
int initialize(gameCases cases[26]); //prototype 

int initialize(gameCases cases[26]) //definition 
{ 
    double values[26] = {.01, 1, 5, 10, 25, 50, 
      75, 100, 200, 300, 400, 500, 750, 1000, 
      5000, 10000 , 25000, 50000, 75000, 100000, 
      200000 , 300000, 400000, 500000, 
      1000000, 2000000}; 

    for (int i = 0; i < 26; i++) 
    { 
     cases[i].value = values[i]; 
    } 
} 

,並呼籲:

initialize(cases); 
+0

是調用... initialize(cases [])?? – user3349184 2014-11-04 19:25:57

+0

更新了我的帖子。但實際上,弗拉德從莫斯科得到的第一個解決方案是更好的解決方案。 – coyotte508 2014-11-04 19:27:53

+0

是的,但我不能使用指針,所以不是你的更好的? – user3349184 2014-11-04 19:31:47

1

聲明函數像

int initialize(gameCases *array, size_t n); 

並稱之爲

initialize(cases, 26);  

或者您可以通過引用傳遞數組。例如

int initialize(gameCases (&cases)[26]); 

考慮到該函數被聲明爲返回類型爲int,但它沒有返回任何內容。

+0

謝謝你,但後說,沒有指針。你可以設計一種方法來做到這一點,沒有指針,弗拉德? – user3349184 2014-11-04 19:01:13

+0

@ user3349184查看我更新的帖子。 – 2014-11-04 19:04:35

+1

@ user3349184您將帖子標記爲最好的地方,儘管您說過不應該使用指針,但函數參數是一個指針:)這個聲明gameCases例[26]等同於gameCases *例唯一正確的解決方案是使用引用如我所示。 – 2014-11-04 20:58:36