为什么我的C++数组求和函数总是返回0而非正确的求和结果?
问题原因
- 你没有接收
ArraySum函数的返回值。ArraySum内部定义的sum是函数内部的局部变量,和main函数里声明的sum是完全独立的两个变量,二者没有任何关联。你调用ArraySum(arr, n)后没有把函数返回的求和结果赋值给main里的sum变量,此时main里的sum属于未初始化的局部变量,输出0只是未定义行为的随机表现,不等于你的函数返回了0。 - 你的代码中
int arr[n]不属于标准C++语法,这是部分编译器提供的变长数组扩展,正式项目中不推荐使用,建议改用std::vector或者动态申请数组。
修正后代码
#include <iostream> #include <vector> using namespace std; int ArraySum(vector<int>& arr, int size){ int sum=0; for(int i=0 ; i<size; i++){ cin >> arr[i]; sum +=arr[i]; } return sum; } int main() { int n; cin >>n; vector<int> arr(n); int sum = ArraySum(arr, n); cout << sum; return 0; }
如果要保留原有数组写法,仅需要把main函数中的调用逻辑改为sum = ArraySum(arr, n);即可正常输出结果,仅需注意变长数组不符合C++通用标准,兼容性存在限制。
内容的提问来源于stack exchange,提问作者Fawwaz Anrico Purnomo
相关产品推荐
相关产品推荐

