在C 中的函数之间传递变量
Passing variables between functions in C++
我的任务是键入并读取()几个双重变量并将它们存储在向量中,然后函数Compute()应计算存储在向量中的所有变量的总和。我已经修复了这些功能,它们运行良好。问题在于最终功能打印()。该功能应打印出结果 - 'sum'和'平均变量。但是我的print()代码无法正常工作,并打印出错误的数字。这是我的代码:
#include <iomanip>
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
vector<double> read(){//this function works fine
cout << "Write some numbers with space between them?" << endl;
double numz;
vector<double> myvector;
do {
cin >> numz;
myvector.push_back (numz);
} while (numz);
return myvector;
}
void compute(double average, double sum, vector<double> &myvector){//this function works fine
//if i put cout in this function it calculates correctly
vector<double>::iterator it;
for ( it=myvector.begin() ; it < myvector.end()-1; it++ ){
sum += *it;
}
average = sum/myvector.size();
}
void print(double average, double sum){//this is printing out wrong numbers
cout.precision(2);
cout << sum << endl;
cout << fixed << average << endl;
}
int main (){
vector<double> myvector = read();
double average;
double sum;
compute(average, sum, myvector);
print(average, sum);//this is printing out wrong numbers
system("pause");
return 0;
}
事先感谢您的任何帮助,我知道我的股票是在功能之间的可变传递中,但是我整天都在调试和阅读教程而没有任何运气。
只需添加&amp;在函数声明中的变量前面,它将传递对您的变量的引用!
void compute(double& average, double& sum, vector<double> &myvector)
您的程序中有几个缺陷:
-
compute
的声明可能更好地更改为:void compute(const vector<double> &myvector, double &average, double &sum);
传递
const vector<double>&
使其在函数中不可修改,并获取average/sum
的引用使更改参数中的通过,请在此处查看更多"正式参数"answers"实际参数"。 -
您最好声明功能
read
为:void read(vector<double>& myVector);
这将避免在函数
read
返回时复制向量。
您在计算函数声明中忘记了参考运算符(&amp;):如果没有它,则不会修改main()函数中的变量:write
void compute(double &average, double &sum, vector<double> &myvector){//this function works fine
而不是您写的内容,它应该有效。
相关文章:
- 我的 c++ 程序似乎没有发现字符串和我拥有但输入使用 getline 的变量之间的比较
- C++ 编译时在两个变量之间交替
- 创建变量之间的运算符排列
- 计算两个uint8_t变量之间差值的最快方法是什么?
- lambda 表达式中引用捕获的 constexpr 变量和非显式捕获的 constexpr 变量之间的区别
- 计算机如何分配两个变量,我们如何计算两个变量之间的距离?
- 类和变量之间的"ampersand operator"是什么意思?
- 函数参数和临时变量之间复制构造函数的奇怪行为
- 文字符号和字符串变量之间的串联然后返回常量字符*
- 变量之间的关系
- 单例变量和全局变量之间的差异
- 为什么堆栈中的函数局部变量之间存在内存空间
- 在C 中的三个布尔变量之间切换
- 物理寄存器和英特尔SIMD变量之间的关系
- C++无法在单独函数中的变量之间建立通信
- c和c++上下文中静态、自动、全局和局部变量之间的差异
- 如何在我存储的两个变量之间生成随机数
- 在变量之间移动队列而不复制元素
- 什么是介于2 int变量之间的mean管道运算符
- C 和 C++ 的静态变量之间的差异