C++ 如何传递此特定代码的引用?

C++ How to pass reference for this specific code?

提问人:AZERUL BIN BADRUL ISHAM 提问时间:11/7/2021 更新时间:11/7/2021 访问量:49

问:

请考虑以下几点:

void sum(vector<string> arr[], vector<string> columnName)
{
    int n, *sum = 0;
    cout << "Enter column number to calculate : ";
    cin >> n;
    cin.ignore(80, '\n');
    cout << columnName[n-1] << endl;
    for (auto item=arr[n-1].begin(); item!=arr[n-1].end(); item++)
    {
        if (item[0] == "1")
        {
            for (int i=1; i<sizeof(item[n-1]); i++)
            {
                // cout << item[i] << " ";
                sum += stoi(item[i]);  //how to reference this(the sum im talking about)
                 cout << sum << " ";
            }
            cout << sum << endl; // to become value of sum outside of the block here
        }
        else
            if (item[0] == "0")
            {
                cout << "Column can not be calculated" << endl;
                break;
            }
    }
    // return sum;
}

包含以下数据:

7
id,age,math,science,malay,chem,bio
0, 1, 1, 1, 1, 1, 1
5
1201101210,19,95,98,97,90,88
1201101490,12,87,100,92,100,70
1201101154,40,98,72,78,81,94
1201101376,23,40,50,70,79,100
1201101987,36,85,73,74,66,59

有一个带有局部变量的总和,我在注释中突出显示了它,我想将该总和从块中带到下面的块中(又名使局部变量全局)。我认为这可以通过使用引用传递来实现,但我不确定如何:(

C++ 数组 引用传递

评论

1赞 11/7/2021
如果不是指针,代码会更有意义 尝试删除声明中的星号。sumint n, *sum = 0;
0赞 Some programmer dude 11/7/2021
例如,还有更多没有意义的事情.或者通常使用迭代器作为数组或向量。我还担心您使用指向向量的指针,而不是使用向量的向量。sizeof(item[n-1])
0赞 Some programmer dude 11/7/2021
为什么要让变量全局?甚至将其作为(引用)参数传递?为什么不正确归还呢?sum
0赞 Pepijn Kramer 11/7/2021
对不起,但这看起来很奇怪 vector<string>arr[]...(将惯用编程与“C”样式数组混合C++):为什么不直接将其设置为std::vector<std::vector<std::sting>>&?那么引用的问题就消失了
0赞 Some programmer dude 11/7/2021
总而言之,看起来您正在从所谓的“竞赛”或“在线评委”网站学习编程。不要那样做,这样的网站不是任何类型的学习或教学资源。事实上,使用它们可能会对您的学习造成积极危害,因为许多此类网站都有不仅不好而且无效的例子。

答: 暂无答案