c++将函数传入主函数错误

c++ passing function into main error

本文关键字:函数 错误 c++      更新时间:2023-10-16

嗨,我有以下c++代码,我想调用函数到main,以下是我的代码:

#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 Bn" : "Array B Greater Than Array An");

    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

我错在哪里?由于

变量AB是函数readData的局部变量,不能被其他函数访问。

将它们声明为全局变量(不推荐)或main中的局部变量,并将它们作为参数传递给readData函数。

我还建议您使用std::vector而不是普通数组。

首先,要小心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 Bn" : "Array B Greater Than Array An");
    return 0;
}