在一个函数中传递一个double**,该函数在c中以double作为输入

在一个函数中传递一个double**,该函数在c中以double作为输入,c,C,我试着将双人**作为双人传球,如下所示: 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;

我试着将双人**作为双人传球,如下所示:

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'类型”


我的问题是其他的吗,也许设计不正确…

矩阵是一个指针数组,而您的函数
需要一个
。您只能传递它的一个元素 一次一个矩阵。对于第一行中的第一项:

calculErreurLocale(errGlobale, matrice[0][0]);
如果要将函数应用于每个元素,
在类似于
matrice1()
的循环中执行此操作。

根据
calculErreurLocale
的函数定义,您需要传递二维数组
矩阵的一个元素。但是,如果您希望将整个数组传递到函数中,然后对其进行操作,我建议您将函数定义更改为
double calcularreurlocale(double erreurlobale,double**entre)
。代码片段太模糊,无法理解您想对代码执行什么操作,但将数组显式键入双精度值并不是答案。

“calculErreurLocale”将两个双精度值作为参数;您向它传递一个双精度指针数组。您应该在循环中调用“calculErreurLocale”,以便逐个传递矩阵的每个元素(这样就可以给出一个double而不是指针数组)。ps:coder en français,你对全局变量
ligne
colonne
的使用是有问题的。@Greg我明白了。非常感谢。ps:je suis enéchange en France et ici on code en français,rip.“我试图将
double**
传递为
double
”为什么?这个代码没有多大意义,所以也许你可以解释你试图解决的问题。这是一条评论,不是答案。@Jabberwocky这是一个正确的例子,说明了如何将double从矩阵传递到函数。这个解释可能会更好。@Jabberwocky:好吧,问题的字面意思是“我的问题是其他的吗?”问题的字面意思是“我尝试了我所知道的一切,我愚蠢吗?”;)@拉瑞先生:)不用担心。你能澄清一下你的功能是否应该考虑矩阵的所有元素,或者仅仅是一个矩阵?我已经尝试过你的建议,但是结果是“主旨”是一个简单的数字,所以它不能是一个多个数字的数组…我将在数组中迭代,并逐个给出每个值。谢谢你的提醒