あなたがタイプT
を持っており、サイズN
の配列を割り当てしようとしている場合、この表現
new T[N]
はのタイプT *
のアドレスを返します。割り当てられた配列の最初の要素T
はint型と同等であれば
だから、例えば
T *a = new T[N];
を書くべき
typedef int T;
またはその後、上記の割り当てが書き込むことができます
using T = int;
int *a = new int[N];
アレイの要素のサイズはsizeof(int)
に等しく、通常は4バイトです。
int[M]
の要素の配列を割り当てようとしているとします。ここで、M
は定数の整数式です。
あなたは、あなたは、各要素が大きsizeof(int[M]
とポインタa
ポイントにしていN
要素の配列を割り当てられ
typedef int T[M];
または
using T = int[M];
と
T *a = new T[N];
を書くことができます配列の最初の要素。
T
が同等TP int [M]
であるため、この文はタイプint[M]
と割り当てられた配列の最初の要素のアドレスを取得a
ポインタのN
要素の配列を割り当てている
int (*a)[M] = new int [N][M];
を書くことができます。
のint R = 5 INT(* A)[C]プログラムの例に戻っ
。 a =新しいint [r] [c];
あなたはこの文で次のよう
typedef int T[c];
または
using T = int[c];
と
T *a = new T[r];
はタイプint[c]
のr
要素(オブジェクト)の配列を割り当て、それを書き換えることができますa
はポインタです割り当てられた配列の最初の要素に追加します。
最初の段落の最後の句が間違っています。 'a'は' int'の配列へのポインタであると宣言されます。 *それでおしまい*。それは何かを指していない*(まだ)。それが 'new []'のためのものです。 – WhozCraig
2D配列は、それぞれが(あなたの場合はintの)別の配列を指すポインタの配列へのポインタです。 – Ripi2
'int r = 5'の後にセミコロンを忘れた – NonCreature0714