C++ 从函数返回浮点数组

C++ 从函数返回浮点数组,c++,function,return,typedef,pass-by-value,C++,Function,Return,Typedef,Pass By Value,如何从调用的所有三个函数返回值 findwitholding(Gross_Pay,FDH_Witholding,FW_TAXRATE); findwitholding(Gross_Pay,FDH_Witholding,SW_TAXRATE); findwitholding(Gross_Pay,FDH_Witholding,HOSPITALIZATION); 如果是这样的话,函数应该是这样的吗 typedef float farray[5] //we have to use typedef fa

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

findwitholding(Gross_Pay,FDH_Witholding,FW_TAXRATE);
findwitholding(Gross_Pay,FDH_Witholding,SW_TAXRATE);
findwitholding(Gross_Pay,FDH_Witholding,HOSPITALIZATION);
如果是这样的话,函数应该是这样的吗

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);

假设数组的大小是固定的,请使用std::array:


如果大小是动态的,则类似地使用std::vector。

C样式的数组在这样使用时效果不佳。改用std::array或std::vector。可以将数组包装在结构中,然后返回/传递结构的实例:
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;
    }
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);