次のような動的配列を宣言しました。
int *arr = new int[n]; //n is entered by user
次に、これを使用して配列の長さを見つけました。
int len = sizeof(arr)/sizeof(int);
の代わりにlen
asを与えます。なぜそうなのですか?1
n
次のような動的配列を宣言しました。
int *arr = new int[n]; //n is entered by user
次に、これを使用して配列の長さを見つけました。
int len = sizeof(arr)/sizeof(int);
の代わりにlen
asを与えます。なぜそうなのですか?1
n
sizeof
動的配列では機能しないためです。はポインタであるpointer
ため、 のサイズが得られますint *arr
割り当てられた配列のサイズを保存するか、より適切に使用する必要がありますstd::vector
は配列ではなくポインターであるためarr
、ポインターのサイズが のサイズに等しいアーキテクチャで実行していますint
。
アンドリューは正しい。nをどこかに保存する必要があります (どこで使用するかによって異なります)。または、.NET を使用している場合は、配列またはリストを使用できます...