3

我会很诚实/坦率地说-我既是 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 中时,我没有得到错误?当然,为了使函数调用不产生错误,我必须进行哪些更改?

4

1 回答 1

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++)

于 2013-07-07T09:11:16.577 回答