Noobish Array问题:运行时检查失败#2 - 变量'arr'周围的堆栈已损坏

时间:2013-07-07 09:09:33

标签: c++ arrays function multidimensional-array runtime-error

我会非常诚实/在这里 - 我既是C ++的菜鸟,也是一般的计算机编程,此外,也是这个网站。我只是在问我的问题时说我实际上看过可能与我自己有关的其他问题,但只是感觉它们超出了我的范围。话虽如此,这是我的问题:

我收到此错误消息:

“运行时检查失败#2 - 变量'arr'周围的堆栈已损坏。”

这是我的代码。对于某些阵列练习来说,这只是一个基本的小东西。函数multiTable输出乘法表:


#include <iostream>
#include <iomanip>

using namespace std;

void multiTable();

int main()
{
    multiTable();
    return 0;
}

//Prints a 9 by 9 multiplication table;
void multiTable()
{    
    const int row = 9, col = 9;
    int arr[row][col];

    for(int i = 1; i <= row; i++)
    {
        for(int j = 1; j <= col; j++)
        {   
            arr[i][j] = j * i;
            cout << setw(3);            
            cout << arr[i][j];
        }
        cout << endl;
    }
}

我还想提一下,而不是函数调用,如果我只包含main中函数体中包含的所有代码,我就不会得到运行时错误。为什么当它包含在一个函数中时,我得到了运行时错误,但当它只是在main中时,我没有得到错误?当然,为了使函数调用不产生错误,我还需要改变什么?

1 个答案:

答案 0 :(得分:2)

这些是您的问题:for(int i = 1; i <= row; i++)for(int j = 1; j <= col; j++)数组计数从0开始。所以你的for循环应该是这样的(从0开始,省略=部分<=}:

for(int i = 0; i < row; i++)for(int j = 0; j < col; j++)