7

いくつかの計算を行うために C で関数を作成しています。そして、それを配列値として別の関数にこの方法で返したいと思います。

455                         calculated_val = calculation(value_perf);


358 int calculation(double* dataset){
359
360         double calculated[8] = {};
361         calculated[0] = dataset[7]/dataset[5];
362         calculated[1] = (dataset[0] + dataset[1] + dataset[2] - dataset[3] - dataset[4])/(dataset[5]);
363         calculated[2] = dataset[3]/dataset[5];
364         calculated[3] = dataset[6]/dataset[5];
365         calculated[4] = dataset[8]/dataset[5];
366         calculated[5] = dataset[9]/dataset[10];
367         calculated[6] = dataset[11]/dataset[5];
368         calculated[7] = dataset[12]/dataset[5];
369         return calculated;
370 }

その間、私はそうしています..次の警告が表示され、理解できません。

369:2: warning: return makes integer from pointer without a cast [enabled by default]
369:2: warning: function returns address of local variable [enabled by default]

私が根本的に見逃したものはありますか?ヒント/解決策を教えてください。

4

3 に答える 3

1

結果が返される追加のパラメーターを取ることができます。

void calculation(double* dataset, double * result)

そして、以下のように関数を呼び出します

calculation(value_perf, calculated_val);

ここで、calculated_val は double 配列として宣言されていると想定されます。

戻り値を同じ式の別の関数で使用すると便利なため、同じパラメーターを返すことができます。

double * calculation(double* dataset, double * result)
{
    ...
    return result;
}
于 2013-09-18T07:20:27.210 に答える