2016-04-13 4 views
-1

実行時にユーザー入力に基づいて配列のサイズを変更する必要があり、ベクターを使用できません。配列を定義し、ユーザーの入力に基づいてサイズを指定するVS2015

int main() {  
    int* array; 
    int size = 0; 

    cin >> size; 

    array = new int[size]; 

    //do some stuff in here setting values in the array 

    for (int i = 0; i < size; i++) { 
     cout << array[i]; 
    } 

    delete [] array; 
} 

コードがコンパイルおよびVS2015で実行されますが、代わりに適切なサイズのアレイに配列を割り当てることがちょうどその配列ポイントへのメモリに値-842150451をダンプ。ベクトルなしでこれを行う方法はありますか?もしそうなら、どうしたらいいですか?

+4

私はユニークなものに値を設定するコードのシンプルな作品を追加、それは私のためにうまくいった。配列の値をどのように設定しているかをよく見て、問題が見つからない場合は、そのコードの一部も表示するように質問を編集してください。 –

+1

実際のコードとあなたが入力したものを投稿してください。どのように出力が期待どおりに異なるかを説明します。 –

答えて

1

デフォルトでは配列は初期化されていないため、以前はメモリ内にあったものがあります。あなたが0にそれらのすべてを初期化したい場合は

あなたは

array = new int[size](); 

を行うことができ、この問題のいくつかのより多くの答えがあります:How do you initialise a dynamic array in C++?

関連する問題