c - 使用指针递归
问题描述
我在 main 中为二维数组动态分配内存。为了我的项目,让我们说我必须在 main 中分配内存,并且必须在 function1 中传递数组,然后在function2中传递相同的数组,然后递归调用function2 .关于如何在不出现分段错误的情况下做到这一点的任何想法?
主要的:
int main()
{
int n,m;
scanf("%d %d",&n,&m);
int **array;
array = malloc(n * sizeof(int *));
if(array==NULL) printf("Couldn't allocate memory.\n");
for(int i=0; i<n; i++)
{
array[i] = malloc(m * sizeof(int));
if(array[i]==NULL) printf("Couldn't allocate memory.\n");
}
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
scanf("%d",&array[i][j]);
}
}
function1(n,m,array);
for(int i=0; i<n; i++)
{
free(array[i]);
}
free(array);
}
功能1:
void function1(int n,int m,int **array)
{
int S=0;
for(int j=0; j<m; j++)
{
S=function2(n-1,j,&array);
}
}
功能2:
int function2(int row,int column,int ***array) //it counts the sum of every column
{
if(row==1) return (*array)[row][column];
int number = (*array)[row][column];
long middle = number + function2(row-1,column,array); //i get a Segmentation Fault
}