2016-08-23 13 views
-3

関数内で宣言されたとき、メインでdelete []を使用:、最初の関数」新しいintは[]私の最初の仕事はこれです

readNumbers、STDから10個の数字のセットを読むことです:: CINとそれらを使用して、動的に割り当てられた長さ10のintの配列を初期化します(動的割り当てはヒープ上にあります)。関数は配列へのポインタを返さなければなりません。結構です

、しかし私は、その後のことを行う必要があります

「この問題の主な機能は、あなたのprintNumbers関数に新しい配列を渡し、最後にアレイを削除、あなたのreadNumbers関数を呼び出す必要があります。」

しかし、新しいint []が関数内で宣言されているときに、メインでの削除の処理方法がわかりません。ここに私のコードの関連部分があります。

int main(){ 
    printNumbers(readNumbers(),10); 

    delete[] numbers; 

} 

int *readNumbers(){ 
    int * numbers; 
    numbers = new int [10]; 

    for (int i = 0; i < 10; i++){ 
     int userinput; 
     cin >> userinput; 
     *(numbers+i) = userinput; 
    } 
    return numbers; 
} 

は明らかにメインで[]削除要求が私は解決策が分から午前、構文エラーです。

+0

これは構文エラーではありません。それは宣言されていない変数を使用するだけです。 – Barmar

+3

これを終えたら、自分自身をうまく回して、新しい形の配列形式がまったく存在しないことを忘れてください(最終学年を終えた後、先生に教えるためにもっと良いことを教えるようにしてください) 。 –

+0

Cコンパイラでコンパイルしないでください.C – dave

答えて

5

readNumbers()の結果を変数に代入してから削除する必要があります。

int main() { 
    int *numbers = readNumbers(); 
    printNumbers(numbers, 10); 
    delete[] numbers; 
    return 0; 
} 
+0

あなたはウィザードがありません。うれしい! – Darko

関連する問題