2015-11-25 62 views
1

它更容易使用一些代碼來解釋:C++結構和「預期主表達式」錯誤

#include <iostream> 
using namespace std; 

struct test { 
    int one; 
    int two; 
}; 

void insertdata(test & info) 
{ 
    cin >> info.one; 
    cin >> info.two; 
} 

int doitnow(test mytable[]) 
{ 
    test info; 
    int i = 0; 

    for (i=0; i<3; i++) { 
     insertdata(test & info); 
     mytable[i] = info; 
    } 

    return i; 
} 

int main() 
{ 
    int total; 
    test mytable[10]; 

    total = doitnow(test mytable[]); 
    cout << total; 
} 

所以,我需要通過引用傳遞信息的功能insertdata,我需要使用doitnow該功能填寫表格,我需要在主函數中顯示doitnow中插入的項目數量。當我嘗試呼叫功能時,我總是收到錯誤:

teste.cpp: In function ‘int doitnow(test*)’: 
teste.cpp:21:29: error: expected primary-expression before ‘&’ token 
insertdata(test & info); 

teste.cpp: In function ‘int main()’: 
teste.cpp:33:30: error: expected primary-expression before ‘mytable’ 
total = doitnow(test mytable[]); 

所以,可能這是一個明顯的錯誤,但我是一個初學者。

感謝您的幫助。

回答

0
  1. test& info定義。如果你將某些東西傳遞給一個函數,你可以編寫一個表達式,比如info。由於您在形式參數列表中指定了info作爲參考,因此它自動爲通過引用傳遞。

    您還寫道

    mytable[i] = info; 
    

    mytable[i] = test & info; 
    

    沒有吧?

    改爲使用insertdata(info);

  2. 同樣適用於陣列。改爲使用doitnow(test)

+0

恩,謝謝你先生。它解決了這個問題,並且合理。 – mnib

相關問題