我试图将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'类型。”
是我的问题吗,也许设计不正确...
答案 0 :(得分:1)
根据calculErreurLocale
的函数定义,它期望您传递二维数组matrice
的元素。但是,如果您希望将整个数组传递给函数,然后对其进行操作,则建议您将函数定义更改为double calculErreurLocale(double erreurGlobale, double** entree)
。该代码段太含糊,无法理解您要如何使用该代码,但是显式将数组类型转换为双精度值并不是答案。
答案 1 :(得分:0)
matrice
是一个指针数组,而您的函数
需要一个double
。您只能将其传递给
一次矩阵。对于第一行中的第一项:
calculErreurLocale(errGlobale, matrice[0][0]);
如果您想将该功能应用于每个元素,
以类似于matrice1()
的循环进行操作。