"int *p[3]
"(pは3つのポインタの配列で、異なる行のサイズとしてメモリを割り当てることで、任意の数のintの3つの異なる行を持つことができます)を完全に理解しています。int(* p)[3]とint * p [3]の違いは何ですか?
私の混乱は、 "int (*p)[3]
"の意味ですか?それは "p"のようにintまたは3つの連続したメモリのアドレスを格納していますか?
プログラム内での使用方法を明確にし、区別する方法を明記してください。
ありがとうございます。
@revised
重複して質問して申し訳ありません。私は集中的に疑問を捜しませんでした。しかし、私の疑いはまだ初心者プログラマーとして残っています。私はQ/C pointer to array/array of pointers disambiguation
と
第2のリンクのページの両方を経て、部分的にので、私の疑問を解消疑問をクリアしてスタックとヒープを参照して、質問の上に説明してください例:
ためint *p[3]; // (1)
スタックの12(3 * 4バイト)バイトを取り、ヒープのためには実行時によって異なります。リンクint (*p) [4]?の答えの一つに与えられた1
p1 = new int[7][3]; // (3)
として 今
ため
int (*p1)[3]; //(2)
(2)を使用して "新規" になります。今私の質問は "int(* p1)[3]; //(2)"は3 intの配列へのポインタなので、eq(3)のようにコンパイル時にp1がどれくらいのメモリを取るかだから何それから
p1 = new int[n][3]; // (3) where n is an integer
によって置き換えられますか?
説明してください。
http://cdecl.org/ HTTPの – dyp
可能なDUP:// stackoverflow.com/questions/3382951/int-p-4 – lurker