2017-07-29 3 views
-1

配列の最小値と最大値を計算する関数を持っていれば、関数が実行されている間に編集できるように、関数のパラメータに最小値と最大値を入れるのは悪い習慣です。Cの練習で複数の値を返す目的で複数の関数パラメータを使用していますか?

だから私はvoid minmax(array, int min, int max)

最小と最大の変数はnullとしてで送信されると、関数が実行時に変更を取得しています。これは大丈夫でしょうかmallocを使って配列を取得し、代わりにポインタを返すべきですか?

+0

https://stackoverflow.com/questions/3829167/returning-multiple-values-from-a-function –

+0

'minmax()'は配列の大きさをどのように知っていますか?おそらく、配列のエントリ数を指定する別の引数があるはずです。 –

答えて

3

Q:いいえ、全然。私は、配列の最小値と最大値を計算する関数を持っている場合は、機能paramiters

Aで最小値と最大値を含めるように悪い習慣でしょう。それは完全に合理的なことです。

Q: "だから私は... void minmax(array, int min, int max)を持っているでしょう"

A:いいえ、ええと。それは "min"と "max"を呼び出し側に返すことはありません。例えば

void minman(int * array, int * min, int * max);

:代わりに、あなたのようなものが必要

int myarray[] = {1, 2, 3}; 
int min, max; 
minman(myarray, &min, &max); 
... 
1

ポインタがminmaxであることを除いて、それは全く問題ありません。あなたが持っているのと同じように普通のものである場合は、intのように、発信者はあなたが行った変更を見ることはありません。

1

パラメータを介して値を返す関数に問題はありません。あなたが書いたコードを除いて動作しません - このようにそれを変更します。

void minmax(int *array, int *min, int *max) 

returning multiple values from a functionを参照してください。

+0

「私は思っていません...」のような免責事項から回答が始まる場合、その質問は、あまりにも批判的な話題ではありません。 – Olaf

+0

質問がうまくいっている間に、私の答えは「私はそうは思わない」と始まってはいけません。 –

+0

@Olaf質問を削除するために私の答えを編集しました。 –

関連する問題