运行时检查失败#2 S C ++

时间:2016-04-29 02:49:03

标签: c++ arrays pass-by-value

我在使用C ++程序时遇到了麻烦。它一直给我一个运行时错误#2 - S.它虽然构建良好。它建立得很好。 Main应该调用另外两个函数,一个将int放入一个数组,另一个反转数组在数组上的位置,实际上是创建一个'reverse'数组。

#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 个答案:

答案 0 :(得分:1)

  

storeArray(&amp; foo [arraysize],arraysize);

这会将地址传递过去 foo

的结尾

改为使用:

storeArray(foo, arraysize);  

void storeArray(int* foo, int arraysize)

同样地:

  

flipArray(&amp; foo [arraysize],arraysize);

编辑:刚刚注意到你#include <array>并使用了C风格的数组。不是#include <array>

中定义的C ++ STL数组