将创建的表传递给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;
}
答案 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++ )
如果您不小心超出了数组的大小,那么编译器需要警告您,为什么您没有任何警告或错误。
考虑使用矢量而不是上面建议的数组。