C++ 如何在具有填充值的函数中获取全局2d指针数组?
如何从动态定义数组并填充其元素的另一个函数中获取函数中的指针数组(声明为全局的)C++ 如何在具有填充值的函数中获取全局2d指针数组?,c++,arrays,function,pointers,recursion,C++,Arrays,Function,Pointers,Recursion,如何从动态定义数组并填充其元素的另一个函数中获取函数中的指针数组(声明为全局的) int row=0, col=0, special=0; int **maze,*exact; void func(int n, int m, int a){ if(n==0 && m==0) a=0; if(maze[n][m]==1) a++; if(n==row-1 &a
int row=0, col=0, special=0;
int **maze,*exact;
void func(int n, int m, int a){
if(n==0 && m==0)
a=0;
if(maze[n][m]==1)
a++;
if(n==row-1 && m==col-1){
exact[a]++;
return;
}
if(m<col-1)
func(n,m+1,a);
if(n<row-1)
func(n+1,m,a);
}
int main(int argc, char** argv) {
int a=0,b=0;
scanf("%d%d%d",&row,&col,&special);
*maze = new int[row];
for(int i = 0; i<row;i++)
maze[i] = new int[col];
exact = new int[special+1];
fill(&maze[0][0],&maze[0][0]+sizeof(maze),0);
fill(exact,exact+special+1,0);
for(int i = 0; i<special;i++){
scanf("%d%d%d",&a,&b);
maze[a--][b--]=1;
}
func(0,0,0);
for(int i = 0; i<=special;i++){
printf("%d\t",exact[i]);
}
return 0;
}
int行=0,列=0,特殊=0;
整数**迷宫,*精确;
void func(int n,int m,int a){
如果(n==0&&m==0)
a=0;
if(迷宫[n][m]==1)
a++;
如果(n==行1&&m==列1){
精确[a]++;
返回;
}
如果(mHow is not working,确切地说,它是如何工作的?这应该是做什么的,你会得到什么错误呢?也就是说,你对迷宫的初始化不应该工作,因为它应该是一个int**,你在初始化之前先解除它,然后将它初始化为错误的类型。那么,我应该做什么更改,我首先将行数设置为#row,然后设置为ite对行进行分级以创建大小为#列的列…一种方法是声明int*maze;
并用newint[row][columns]初始化它;
您可以将参数传递给函数void f(大小为#t行,大小为#t列,maze[row][columns])
。请注意,该类型将隐式转换为int*
,而不是int**
。另一种方法是将maze
初始化为int[row]
数组,然后将每行转换为int[columns]数组
,但通常情况下,如果数组不是矩形的,您只会这样做以节省空间。否则,第一种方法更有效。它到底是如何工作的?这应该是做什么的,您会得到什么错误?也就是说,迷宫的初始化不应该工作,因为它应该是一个int**并且您以前会取消它它已初始化,然后将其初始化为错误的类型。因此,我应该做哪些更改,首先将行数设置为#行,然后在行上迭代以创建大小为#列的列…一种方法是声明int*maze;
并使用new int[row][columns]对其进行初始化
您可以将参数void f(size\u t row,size\u t columns,maze[row][columns])
传递给函数。请注意,该类型将隐式转换为int*
,而不是int**
。另一种方法是将maze
初始化为int[row]
数组,然后将每行初始化为int[columns]数组
,但通常情况下,如果阵列不是矩形的,则这样做只是为了节省空间。否则,第一种方法更有效。