2010-12-20 11 views
2

配列の作成は、両方の方法で行うことができますか?しかし、配列のすべてが配列アドレスの先頭ではなく、その型に十分なバイト数を割り当てます。だから私の質問は、バイトの配列へのポインタを使用するか、最初のオプションを使用するかの違いは何ですか?ポインタ配列の質問

int numbers[10]; 

int* num = new int[10]; 
or 
int* num = new int(10); 
+0

値は、ヒープ上の単一のintを割り当てますが、私は行くし、それらを見つけるのが面倒です。 – dmckee

答えて

4

2番目のバージョンでは、10に初期化された整数へのポインタが宣言されています。これは配列ではありません。

+0

int * num [10]とは何ですか? 10要素の配列へのポインタ? – RoR

+2

int * num [10]; 10個のintポインタを持つ配列を返します。 –

4

int array[10];には2つの異なる動作があります。関数内で使用されると、スタックに初期化されていないintが10個割り当てられます。関数の外では、BSSメモリにゼロ初期化intを10個割り当てます。

new int[10];は、ヒープ上に10個の初期化されていないintを割り当てます。

new int(10);は、いくつかの重複がある10

+0

'int array [10]'は、パラメータリストの中で3番目の意味を持ちます。 **と**そこにしかない、それは 'int * array'の構文ビーンガーです。つまり、配列をC++で値渡しすることはできません。 – fredoverflow