c++ - 即使传递了函数,C++ 初始化变量仍保持打印为零
问题描述
我传递了一个函数来计算数组中所有数字的总和,但它输出为 0,这是我将它初始化为的值。该函数位于与实际程序不同的文件中(我还创建了一个名为 Stats 的类)。当我在函数中显示总和时,它会显示正确的数字。只有当我将它初始化为 0 时才会出错。当我通过函数时,我怎样才能让它在哪里,总数实际上更新到正确的数量而不是零。
const int num = 12;
class Stats
{
private:
double stats[num];
double total = 0;
public:
void setValue(double stats[num], int);
double calcTotal(double stats[num], double);
};
double Stats::calcTotal(double stats[num], double total)
{
total = 0;
for (int i = 0; i < num; i++)
{
total += stats[i];
}
cout << total;
return total;
}
int main()
{
double rainFall[num];
double total = 0;
Stats rainStats;
for (int i = 0; i < num; i++)
{
cout << "What was the rain fall for month #" << i + 1 << " ?" << endl;
cin >> rainFall[i];
rainStats.setValue(rainFall, num);
}
rainStats.calcTotal(rainFall, total);
cout << total;
return 0;
}
它打印出 0 inint main()
但 in calcTotal
,它是正确的数量。
解决方案
total
是按值传递的,所以它只是参数的一个副本,内部对其进行的任何修改calcTotal()
都与传入的原始参数(即total
in main()
)无关。
您可以更改为按引用传递(然后不需要返回值)。
void calcTotal(double stats[num], double&);
或者在main()
.
total = rainStats.calcTotal(rainFall, total);
推荐阅读
- python - 为单层感知器创建线性可分的 N 维数据集
- javascript - 在对象数组上使用 $lookup 来连接 MongoDB 中的两个文档
- tableau-api - 使用 Rank() 和 Index() 过滤不改变总数
- python - Launching subprocesses on resource limited machine
- scala - FP growth model in spark
- css - 为什么导航我的 Rails 应用程序时我的 CSS 媒体查询会中断
- javascript - 在视图中自动播放 HTML5 视频
- python - 使用子类和超类时 __init__ 的参数
- ios - 无法以编程方式实例化初始视图控制器
- php - PHP 在 Docker 中找不到 MySQL 服务器