- ベストアンサー
全配列に0を入力
c言語で配列を宣言した後に、ループを使わずに 配列全体に0を入力したいのですが、そのような方法はありますか。 あれば、どのようにすればよいか教えてください。お願いします。
- みんなの回答 (12)
- 専門家の回答
質問者が選んだベストアンサー
整数であればmemsetで0を埋めればよいのですが、浮動小数点数やポインタの場合、内部表現が0とは限らないので、次のような関数を使えば一応ループを回避できます。 void fill(int *array, size_t n) { if (n > 0) { *array = 0; fill(array + 1, n - 1); } } ここで、arrayの型は必要に応じて変更してください。 例えば、double型の配列ならdouble *arrayとしてください。 あるいは、もう一つの手として、あらかじめ全要素を0で初期化した配列を別に用意しておいてmemcpyでコピーするなら、どんな型でもOKです。
お礼
回答ありがとうございます。 memsetでは計算したときに違った値を出してくるときがあったので助かりました。 回答ありがとうございました。
補足
一応使えているのですがポインタの部分とsize_tの指定が、よく理解できないのでよければ、この文がどのように動いているのか解説してもらえないでしょうか。