在C 中的函数之间传递变量

Passing variables between functions in C++

本文关键字:变量 之间 函数      更新时间:2023-10-16

我的任务是键入并读取()几个双重变量并将它们存储在向量中,然后函数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)

您的程序中有几个缺陷:

  1. compute的声明可能更好地更改为:

    void compute(const vector<double> &myvector, double &average, double &sum);
    

    传递const vector<double>&使其在函数中不可修改,并获取average/sum的引用使更改参数中的通过,请在此处查看更多"正式参数"answers"实际参数"。

  2. 您最好声明功能read为:

    void read(vector<double>& myVector);
    

    这将避免在函数 read返回时复制向量。

您在计算函数声明中忘记了参考运算符(&amp;):如果没有它,则不会修改main()函数中的变量:write

void compute(double &average, double &sum, vector<double> &myvector){//this function works fine

而不是您写的内容,它应该有效。