首页 > 解决方案 > 使用指针递归

问题描述

我在 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
}

标签: cpointersrecursionmultidimensional-arraysegmentation-fault

解决方案


推荐阅读