在将double作为c中输入的函数中传递double **

时间:2019-02-25 10:08:57

标签: c

我试图将double **传递为double,例如:

double calculErreurLocale(double erreurGlobale, double entree)
{
    return entree*(1-entree)*erreurGlobale;
}

double** matrice1()
{
    double** matrice_I;
    int i;

    matrice_I=malloc(sizeof(double*)*ligne);
    for (i=0; i<ligne; i++)
    {
        matrice_I[i]=malloc(sizeof(double)*colonne);
    }

    //affiche_matriceFloat(matrice_I);
    return matrice_I;
}

int main()
{
    double **matrice = matrice1();
    matrice[0][0]=-1;
    matrice[1][0]=-1;

    calculErreurLocale(errGlobale, matrice);
 return = 0;
}

很明显,我得到一个错误。我试图投射它或类似的东西:

calculErreurLocale(errGlobale, (double) matrice);

然后我得到“错误:无法将指针强制转换为'double'类型。”

是我的问题吗,也许设计不正确...

2 个答案:

答案 0 :(得分:1)

根据calculErreurLocale的函数定义,它期望您传递二维数组matrice的元素。但是,如果您希望将整个数组传递给函数,然后对其进行操作,则建议您将函数定义更改为double calculErreurLocale(double erreurGlobale, double** entree)。该代码段太含糊,无法理解您要如何使用该代码,但是显式将数组类型转换为双精度值并不是答案。

答案 1 :(得分:0)

matrice是一个指针数组,而您的函数 需要一个double。您只能将其传递给 一次矩阵。对于第一行中的第一项:

calculErreurLocale(errGlobale, matrice[0][0]);

如果您想将该功能应用于每个元素, 以类似于matrice1()的循环进行操作。