使用动态分配的数组时出错

Errors while using dynamically allocated arrays

我不明白为什么这段代码有问题 在做了一些测试后,我明白在这个函数 determinant_V2 中我什至无法打印 Mat[0][0]。 不明白为什么Mat不能作为参数

int main()
{
    int n =0, pos=1;
    float tmp=0;
    printf("entrez la taille de la matrice :  ");
    scanf("%d",&n);
    float** Mat = (float**) calloc(n,sizeof(float *));
    for(int i = 0 ; i< n; i++){
        Mat[i] = (float*) calloc(n,sizeof(float));
    }
    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
            printf("\n entrer les valeurs de A[%d][%d] ",i+1,j+1);
            scanf("%4f",Mat+i+j);
        }
    }
    printf("delta general = %lf", determinant_V2(Mat,n));
    return 0;
}

float** SousMatMinusLine(float** Mat, int taille ,int line){
    float** sousMat = (float**) calloc(taille-1,sizeof(float *));
    for(int i = 1 ; i< taille-1 ; i++){
        if(i!=line){
            sousMat[i] = (float*) calloc(taille-1,sizeof(float));
            for(int j =1 ;j < taille-1; j++){
                sousMat[i][j] = Mat[i][j];
            }
        }
    }
    //free(Mat);
    return sousMat;
}

float determinant_V2(float ** Mat, int taille ){
    int k = 1;
    float det =0.0;
    if(taille == 1){
        return Mat[0][0];
    }
    for(int i =0 ; i<taille; i++){
        float ** sous_Mat = SousMatMinusLine(Mat, taille,i);
        det += determinant_V2(sous_Mat, taille -1 )*k ;
        k *= -1;
    }
    return det;
}

本次调用scanf

scanf("%4f",Mat+i+j);

不正确。你需要写

scanf("%4f", *( Mat + i )+j);