Передайте double ** в функцию, которая принимает double как вход в c - PullRequest
0 голосов
/ 25 февраля 2019

Я пытался передать двойной ** как двойной, как это:

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 голосов
/ 25 февраля 2019

Согласно определению вашей функции для calculErreurLocale ожидается, что вы передадите элемент двумерного массива matrice.Однако, если вы хотите передать весь массив в функцию, а затем манипулировать ею, я бы предложил вам изменить определение функции на double calculErreurLocale(double erreurGlobale, double** entree).Фрагмент кода слишком двусмыслен, чтобы понять, что вы хотите делать с кодом, но явное приведение типа к массиву с двойным значением не является ответом.

0 голосов
/ 25 февраля 2019

matrice - это массив указателей, тогда как ваша функция ожидает double.Вы можете передать только один элемент матрицы за раз.Для первого элемента в первой строке:

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

Если вы хотите вместо этого применить функцию к каждому элементу, сделайте это в цикле, аналогичном тому, что делает matrice1().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...