【问题标题】:Returning A Float Array from a function从函数返回浮点数组
【发布时间】:2015-05-07 14:46:57
【问题描述】:
findwitholding(Gross_Pay,FDH_Witholding,FW_TAXRATE);
findwitholding(Gross_Pay,FDH_Witholding,SW_TAXRATE);
findwitholding(Gross_Pay,FDH_Witholding,HOSPITALIZATION);

如何返回所有三个调用函数的值?

void findwitholding(farray Gross_Pay, farray FDH_Witholding,
                float Witholding)
{          
    for(int i = 0; i < ISIZE; i++)               
        FDH_Witholding[i] = Gross_Pay[i] * Witholding;     
}

如何按值传递它?像这样?

typedef float farray[5] //we have to use typedef
farray FED,STATE,HOSPITAL;

 FED = findwitholding(Gross_Pay,FDH_Witholding,FW_TAXRATE);
 STATE = findwitholding(Gross_Pay,FDH_Witholding,SW_TAXRATE);
 HOSPITAL = findwitholding(Gross_Pay,FDH_Witholding,HOSPITALIZATION);

如果是,函数应该是这样的吗?

*farray* findwitholding(farray Gross_Pay, farray FDH_Witholding,
                float Witholding)
    {          
        for(int i = 0; i < ISIZE; i++)               
            FDH_Witholding[i] = Gross_Pay[i] * Witholding;    
        return FDH_Witholding;
    }

【问题讨论】:

  • C 风格的数组在这样使用时效果不佳。请改用std::arraystd::vector
  • 您可以将数组包装在结构中,并返回/传递结构的实例:stackoverflow.com/questions/27410943/…

标签: c++ function return typedef pass-by-value


【解决方案1】:

假设数组大小固定使用std::array:

using farray = std::array<float,ISIZE>;

farray findwitholding(const farray& gross_pay, float witholding){
  farray fdh_witholding;
  for(int i = 0; i != ISIZE; ++i)
    fdh_witholding[i] = gross_pay[i] * witholding;
  return fdh_witholding;
}

auto fed = findwitholding(gross_pay, FW_TAXRATE);
auto state = findwitholding(gross_pay, SW_TAXRATE);
auto hospital = findwitholding(gross_pay, HOSPITALIZATION);

如果大小是动态的,同样使用std::vector

【讨论】:

    猜你喜欢
    • 2016-06-21
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    • 2018-11-30
    • 2017-02-10
    相关资源
    最近更新 更多