我想在一个单独的函数中创建一个动态二维数组。数组的大小将在运行时确定。一个动态创建二维数组的函数
直接传递一个数组:
void foo(int **arr,int width,int height)
{
arr=new int*[width];
for(int i=0;i<height;i++)
{
arr[i]=new int[height];
}
//fill...
}
...
int** array;
foo(array)
似乎并没有工作
通过指针
void foo(int ***arr,int width,int height)
{
*arr=new int*[width];
for(int i=0;i<height;i++)
{
*arr[i]=new int[height];
}
//fill...
}
...
int **array;
foo(&array)
犯规传递数组似乎工作,要么
怎么办我这样做?
使用'std :: vector',没什么可说的。 –
请避免使用'std :: vector>'。你需要传递一个三元指针才能工作。 –
101010
如果你打算走这条路线,你可以做一个[稍微优化](http://stackoverflow.com/questions/21943621/how-to-create-a-contiguous-2d-array-in- c/21944048#21944048) – PaulMcKenzie