如何将函数的整数大小与数组的实际大小链接起来?C++
How do i link the integer size of the function with the actual size of an array? C++
>我正在尝试编写一个计算数组总和的函数,但是当我声明 int size = 0; 时,该函数运行 0 次,因为 i=0 ; i
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");
}
传入数组大小作为参数:
#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))
结构,我建议你不要使用它。
您需要
将两个参数传递给函数 - 数组的开头加上大小,或者开始和(一个超过)结束,就像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;
使用 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
.
尚未提及的另一种方法是:
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;
}
相关文章:
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 将 SDL2 与 CMake 链接起来
- 如何在应用程序子项目中将静态库与gradle子项目链接起来
- 尝试将 sfml 和 c++ 与 Windows 10 上的可移植 vscode 链接起来
- 将Qt应用程序与CMake和Visual Studio链接起来
- 如何将libc++与调试符号链接起来?
- 在Qt Creator中将Lua与C++链接起来
- 将 c++ 与 python 链接起来
- 是否可以将同一组源数据与不同的表模型链接起来?
- 在将C全局变量与C 代码链接起来的麻烦
- 将libstdc 静态链接起来是一个很好的做法
- 如何将函数的整数大小与数组的实际大小链接起来?C++
- 如何将 c++ 代码与 "libguile" "guile-1.8.8" 链接起来?
- 将 OpenCV 库与 Eclipse Ubuntu 链接起来
- 使用 JNI 静态地将 Java 与C++链接起来
- C++如何将我的主类与我的头文件链接起来
- 如何将 aws-sdk-cpp 与 CMake 链接起来
- 我怎么能说视觉工作室将库与我的项目链接起来
- 将 mingw dll 与 Windows DLL 链接起来
- 将问题与定义为静态的存储类链接起来