[c] 2次元配列を割り当てるうんざりな方法?


0 Answers

これは、2D配列を動的に割り当てる典型的な方法です。

  • edouble [n+1]型の配列への配列ポインタです。
  • したがって、 sizeof(*e)は、 double [n+1]配列のサイズであるpointed-at型の型を与えます。
  • あなたはn+1配列のためのスペースを割り当てます。
  • この配列の配列の最初の配列を指すように配列ポインタeを設定します。
  • これにより、 ee[i][j]として使用して、2D配列内の個々の項目にアクセスすることができます。

個人的には、このスタイルははるかに読みやすいです:

double (*e)[n+1] = malloc( sizeof(double[n+1][n+1]) );
Question

プロジェクトでは、誰かがこの行をプッシュしました:

double (*e)[n+1] = malloc((n+1) * sizeof(*e));

これはおそらく(n + 1)*(n + 1)倍の2次元配列を作成します。

たぶん私は、これまでのところ、私が尋ねた誰も、これが正確に何であるか、それがどこから起きたのか、なぜそれがうまくいくのかを教えてくれる人は誰もいないからだと言います。

多分私は何かが分かりませんが、もし誰かが私に上の行を説明することができたらそれを感謝します。 個人的には、私たちが実際に理解しているものを使用すると、もっと気分が良くなります。




Related