在一个函数中传递一个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:好吧,问题的字面意思是“我的问题是其他的吗?”问题的字面意思是“我尝试了我所知道的一切,我愚蠢吗?”;)@拉瑞先生:)不用担心。你能澄清一下你的功能是否应该考虑矩阵的所有元素,或者仅仅是一个矩阵?我已经尝试过你的建议,但是结果是“主旨”是一个简单的数字,所以它不能是一个多个数字的数组…我将在数组中迭代,并逐个给出每个值。谢谢你的提醒