Array/Pointer/Code by Refrence



  • Ich hänge schon seit Stunden hier und bekomme es einfach nicht hin:

    void f3(double*a[], double*b[], double*c[]){
        *c[0]=(*a[1])* (*b[2])-(*a[2])* (*b[1]);
        *c[1]=(*a[2])* (*b[0])-(*a[0])* (*b[2]);
        *c[2]=(*a[0])* (*b[1])-(*a[1])* (*b[0]);
        }
    
    int main (int argc, const char * argv[]){
        double d[] = {1, 2, 3};
        double e[] = {-7, 8, 9};
        double f[] = {0, 0, 0};
    
        f3(&d, &e, &f);
    }
    

    Also, mein Problem ist, dass immer wieder folgende Warnings auftauchen:
    "Warning :Incompatible Pointer Types Passing 'Doule(*)[3]' to parameter of type 'double **'

    Ich verstehs nicht! Ich wäre sehr dankbar für jede Hilfe!



  • Die Warnings werden mir für die Zeile
    f3(&d, &e, &f) angezeigt.



  • Du übergibst Pointer auf double-Arrays, deine Funktion erwartet aber Arrays von double-Pointern. Da man nicht weiß, was du überhaupt vorhast, kann man dir auch nicht wirklich helfen; vermutlich sind das sowieso beides die falschen Typen.



  • Ich denke, dies ist gewünscht:

    void f3(double a[], double b[], double c[])
    {
        c[0] = a[1] * b[2] - a[2] * b[1];
        c[1] = a[2] * b[0] - a[0] * b[2];
        c[2] = a[0] * b[1] - a[1] * b[0];
    }
    

    Und beim Aufruf dann nur

    f3(d, e, f);
    

Anmelden zum Antworten