代码之家  ›  专栏  ›  技术社区  ›  victory

返回c中的int**函数

  •  0
  • victory  · 技术社区  · 7 年前

    我正在与函数int**solve()斗争。我在任何地方都找不到解决办法,或者我可能无法准确地表达我的问题。我不能返回正确的值,我总是得到编译错误或分段错误。如何初始化int ptr**,我想从函数返回它?注意,函数类型(int**)已给定,我无法更改它。我试图使用calloc,因为如果我想返回int ptr[4][4]行,它说我返回的是局部变量。我不知道该怎么做,也许ptr不必是int。我只想返回正确的元素并使用return ptr。我的代码:

    int** Solve(){
        int array[6][6];
    
        //some determining of array's elements...
    
        int **ptr=calloc(4,sizeof(int*));
        for(int i=0;i<4;i++){
            for(int j=0;j<4;j++){
                ptr[i][j]=array[i+1][j+1];
            }
        }
    
        return ptr;
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Eugene Mart    7 年前

    我想在你的问题下面加上一点意见,但我缺乏声誉。

    int r = 3, c = 4, i, j, count;
    
    int **arr = (int **)malloc(r * sizeof(int *));
    for (i=0; i<r; i++)
         arr[i] = (int *)malloc(c * sizeof(int));
    

    这就是二维数组分配的样子。

    malloc和calloc的区别在于,calloc zero初始化分配的内存,因此在您的情况下它们是可互换的。