2013-03-05 85 views
1

您好我有下面的C++代碼,我想調用函數到主,下面是我的代碼:C++傳遞函數爲主要誤差

#include <iostream> 
#include <numeric> 

int main() 
{ 

    using namespace std; 

    readData(); 

    int sumA = accumulate(A, A + sizeof(A)/sizeof(int), 0); 
    int sumB = accumulate(B, B + sizeof(B)/sizeof(int), 0); 

    cout << ((sumA > sumB) ? "Array A Greater Than Array B\n" : "Array B Greater Than Array A\n"); 


    return 0; 
} 

void readData() 
{ 

int A[] = { 1, 1, 8}; 
int B[] = { 2, 2, 2}; 
} 

我有以下錯誤的CLI:

test.cpp:3:7: error: storage size of ‘B’ isn’t known 
test.cpp:4:7: error: storage size of ‘A’ isn’t known 

在哪裏我在這裏錯了嗎?謝謝

+1

'cout << ((sumA > sumB)? 「Array A大於數組B \ n」:「數組B大於數組A \ n」);''? 'sumA == sumB'的情況如何? – Johnsyweb 2013-03-05 13:33:58

+0

我怎樣才能比較數組中的元素的總和..?對於上述情況,我們怎樣才能以更好的方式寫作 – d3bug3r 2013-03-05 13:40:17

+1

完全不瞭解語言是如何工作的。得到一本好書。 – 2013-03-05 14:15:41

回答

6

變量AB是功能readData的本地功能,不能從任何其他功能訪問。

將它們聲明爲全局變量(不推薦)或作爲main中的局部變量聲明,並將它們作爲參數傳遞給readData函數。我也推薦你用std::vector而不是普通數組。

+1

如果您閱讀以下內容,使用普通數組會更有意義:http://stackoverflow.com/a/15197954/78845 – Johnsyweb 2013-03-05 13:32:34

+0

如何將它寫得更好..?任何想法 – d3bug3r 2013-03-05 13:41:33

0

首先,要小心C和C++中的數組大小。在這裏閱讀以獲取更多信息:http://www.cplusplus.com/faq/sequences/arrays/sizeof-array/

但是請使用std :: vector來代替這個。

#include <iostream> 
#include <vector> 
#include <numeric> 

typedef std::vector<int> int_vec_t; 

//Call by reference to set variables in function 
void readData(int_vec_t& v1, int_vec_t& v2) 
{ 
    v1 = int_vec_t{1,1,8}; //This only works for C++11 
    v2 = int_vec_t{2,2,2}; 
} 

void readUserData(int_vec_t& v) 
{ 
    for(;;) 
    { 
    int val; 
    std::cin>>val; 
    if(val == 0) break; 
    v.push_back(val); 
    } 
} 

int main() 
{ 
    using namespace std; 

    int_vec_t A; 
    int_vec_t B; 

    readData(A,B); 
    //Or 
    readUserData(A); 
    readUserData(B); 

    int sumA = accumulate(A.begin(), A.end(), 0); //Then use iterators 
    int sumB = accumulate(B.begin(), B.end(), 0); 

    cout << ((sumA > sumB) ? "Array A Greater Than Array B\n" : "Array B Greater Than Array A\n"); 

    return 0; 
} 
+0

如何將用戶輸入傳遞給兩個數組然後讓我們說我們想傳遞5個元素到每個數組中.. – d3bug3r 2013-03-05 14:07:25

+0

東西在我剛剛添加的'readUserData'函數的行中。但是,處理用戶輸入是一個棘手的問題,超出了本答案的範圍。 – AxelOmega 2013-03-05 14:17:43

+0

其中是readUserData ..? – d3bug3r 2013-03-05 14:20:30