将二维数组传递给函数

时间:2013-04-20 13:35:03

标签: c++ arrays pointers

将创建的表传递给fillMatrix函数时遇到问题。 另一件事是如何在我的函数中引用这个表。我非常感谢各种帮助。我没有得到任何控制台问题。计划正在冻结。

int **createTable(int n) 
{
    int **table = new int*[n]; 
    for(int i = 0; i<n; i++)
    {
        table[i] = new int[n];
    }
    return table;
}

void fillMatrix(int n, int **tab) 
{
    for(int x = 0; x<=n; x++)
    {
        for(int y= 0; y<=n; y++)
        {
            tab[x][y] = 0;
        }
    }
}  


int main()
{
    int n;
    cout <<"Add size of table";
    cin >> n;
    int **table = createTable(n);

    srand(time(NULL));

    fillMatrix(n, table);


    return 0;
}

2 个答案:

答案 0 :(得分:7)

我在您的代码中只看到一个问题:

for(int x = 1; x <= n; x++)
{
    for(int y = 1; y <= n; y++)
    {
        tab[x][y] = 0;
    }
}

C ++中的数组是从零开始的,但您尝试分配导致未定义行为的tab[n][n]

此外,一旦不再需要,您应该delete数组。


作为另一种解决方案,我建议您使用std::vector而不是动态分配的数组。

答案 1 :(得分:0)

这是他们告诉你的。你的陈述应该是这样的

for( int i = 0 ; i < n ; i++ )   

而不是

for( int i = 0 ; i <= n ; i++ )

如果您不小心超出了数组的大小,那么编译器需要警告您,为什么您没有任何警告或错误。

考虑使用矢量而不是上面建议的数组。