2016-04-29 14 views
0

C++プログラムに問題があります。それは私にランタイムエラー#2 - Sを与え続けます。それはうまく構築します。それはうまくいく。 Mainは2つの関数を呼び出すことになっています.1つはintを配列に入れ、もう1つは配列の数字の位置を逆にして、本質的に 'reverse'配列を作ります。ランタイムチェック失敗#2 S C++

#include "stdafx.h" 
#include <iostream> 
#include <array> 
using namespace std; 

void storeArray(int[], int); 
void flipArray(int[], int); 

int main() 
{ 
const int arraysize = 10; 
int foo[arraysize]; // everyone seems to use foo so I thought I'd try it 

storeArray(&foo[arraysize], arraysize); 

cout << endl; 

flipArray(&foo[arraysize], arraysize); 

return 0; 
} 

void storeArray(int foo[], int arraysize) 
{ 
int counter; 
counter = 0; 

while (counter < arraysize) 
{ 

    cout << "Enter number " << (counter+1) << " : "; 
    cin >> foo[counter];  counter++; 

} 

return; 
} 

void flipArray(int foo[], int arraysize) 
{ 

int counter2; 
int counter3; 

counter2 = 0; 
counter3 = 9; 

for (counter2; counter2 <= 9; counter2++) 
{ 

    cout << "Value number " << (counter2 + 1) << " is " << foo[counter3] << endl; 

    counter3--; 

} 

cout << endl; 

return; 
} 

助けてください。ありがとう!

+1

で定義されたC++ STL配列ではありません。配列の最後のアドレスを関数に渡しています。 'storeArray(foo、arraysize);と' flipArray(foo、arraysize); 'を使用してください。 – user657267

答えて

1

storeArray(& foo [arraysize]、arraysize);

これは単なるfoo

の終わりを過ぎて代わりに使うアドレスを渡します。

storeArray(foo, arraysize); 

そして:

ため同様に
void storeArray(int* foo, int arraysize) 

flipArray(& foo [arraysize]、arraysize);

EDIT:ちょうどあなたが#include <array>であり、Cスタイルの配列を使用していることがわかりました。 #include <array>

+0

'storeArray'は変更する必要はありません。 – user657267

+0

@ user657267はい、それは慣用ではないので、なぜそれを奨励しますか? –

+0

関数が配列を期待していることをヒントするのは慣用ではありませんか? – user657267

関連する問題