我正在尝试编写一个计算数组总和的函数,但是当我声明int size = 0时; ,该函数运行0次,因为i = 0;一世
int arraChec(int arra[]) {
int size = 0;
int sum = 0;
for (int i = 0; i < size; i++) {
sum = sum + arra[i];
}
return sum;
}
int main() {
int arra1[7] = { 2,3,5,7,8,9,1 };
cout << arraChec(arra1) << endl;
system("pause");
}
答案 0 :(得分:1)
你需要向函数传递两个参数 - 数组的开头加上大小,或者开头和(结束时)结束,这在C ++中是常规的:
int arraChec(int* begin, int* end) {
int sum = 0;
for (int* it = begin; it < end; ++it) {
sum += *it;
}
return sum;
}
int main() {
int arra1[7] = { 2,3,5,7,8,9,1 };
cout << arraChec(std::begin(arra1), std::end(arra1)) << endl;
system("pause");
}
当然,您可以实现使用标准库:
cout << std::accumulate(std::begin(arra1), std::end(arra1), 0) << endl;
答案 1 :(得分:1)
将数组大小作为参数传递:
#include <iostream>
int arraChec(int arra[], int size) {
int sum = 0;
for (int i = 0; i < size; i++) {
sum += arra[i];
}
return sum;
}
int main() {
int arra1[7] = { 2, 3, 5, 7, 8, 9, 1 };
std::cout << arraChec(arra1, 7) << std::endl;
}
或使用std::vector
:
#include <iostream>
#include <vector>
int arraChec(std::vector<int>& arra) {
int sum = 0;
for (int i = 0; i < arra.size(); i++) {
sum += arra[i];
}
return sum;
}
int main() {
std::vector<int> arra1 = { 2, 3, 5, 7, 8, 9, 1 };
std::cout << arraChec(arra1) << std::endl;
}
如果你指的是某种C风格(sizeof(arra) / sizeof(*arra))
构造,我建议你不要使用它。
答案 2 :(得分:1)
使用std::array
代替固定大小的C风格数组。
#include <iostream>
#include <array>
#include <numeric>
using namespace std;
int main() {
array<int, 7> arr = { 2, 3, 5, 7, 8, 9, 1 };
cout << accumulate(arr.begin(), arr.end(), 0) << endl;
return 0;
}
输出
35
详细了解std::accumulate
。
答案 3 :(得分:1)
另一种未提及的方式是:
template<size_t N>
int arraChec(int (&arra)[N]) {
int sum = 0;
for (size_t i = 0; i < N; i++) {
sum = sum + arra[i];
}
return sum;
}