コメントを回答に変換します。
あなたは、標準Cには、関数から配列を返すことはできません - あなたは、ポインタのOKを返すことができます(そう示されたコードは、それがはっきりしているものの、再入可能およびスレッドの問題、許されます)。 static
またはmalloc()
などを使用できない場合は、配列を返す代わりに、配列を関数に渡して入力する必要があります。次に、スペースを割り当てるのは発信者の責任です。
srand() — why call it only onceも参照してください。
だから、私は、関数の引数として、グローバル配列を設定し、私はstatic
とmalloc
を使用せずに、配列を得ることができるので、各要素に値を与えることができます意味ですか?
はい、ローカル配列、または考えたいと思う他のタイプの配列です。適切な実装は、
void getRandom(int n_vals, int *i_vals)
{
for (int i = 0; i < n_vals; i++)
i_vals[i] = rand();
}
である可能性がありますが、可能な変形はレニオンです。あなたが本当にそれを望むなら、あなたは印刷を元に戻すことができます。本当にしたい場合はsrand()
に電話することもできます(ただし、一度だけ呼び出す必要があります)。あなたはそれが好きで使用することができます:
void somefunc(void)
{
int data[20];
getRandom(15, data);
…use data…;
}
または
static int data[20];
void somefunc(void)
{
getRandom(18, data);
…use data…;
}
または他の変異体(例えばdata
のファイル・スコープ定義の前にstatic
を使用していないとして - グローバル変数に変換します)。 (質問では10を、配列のスペースとしては20を使用しますが、15と18も状況に応じてOKです)
標準Cでは、配列から関数を呼び出す - あなたはポインタをOKに戻すことができます(コードは再入可能とスレッド発行を持っていますが、表示されているコードは許可されています)。 'static'や' malloc() 'などを使うことができない場合は、配列を返すのではなく、配列を関数に渡して記入する必要があります。次に、スペースを割り当てるのは発信者の責任です。 –
['srand()'も参照してください - なぜそれを一度呼び出すのですか?](http://stackoverflow.com/questions/7343833/srand-why-call-it-only-once/) –
@JonathanLefflerだから、関数の引数としてグローバル配列を設定し、静的およびmallocを使用せずに配列を取得できるように各要素に値を与えることができますか? – Varrian