Rückgabe von Arrays im Funktionskopf



  • Hallo,

    Ich habe folgende Arrays:
    double dErgebnis1[26][1],dErgebnis2[5][1],dErgebnis3[26][2],dErgebnis4[5][1]={0};
    in meinem Programm werden da auch Werte reingespeichert.

    Wie gebe ich die im Funktionskopf zurück...Pointer?...?

    int main(.....,??????)

    danke

    grüße rene



  • Du übergibst der Funktion einfach Zeiger auf Arrays. Die Arrays sind vom Typ double**, also würde der Funktionskopf ungefähr so aussehen:

    void func(double*** dErgebnis1,double*** dErgebnis2,double*** dErgebnis3,double*** dErgebnis4)
    


  • die arrays sind vom typ double*. multidim arrays sind immer nur vom typ*. die dimensionen werden beim kompilieren herumgereicht. nur wenn du dir selber multidims bastelst, hast du die chance auf mehrfache indirektion.

    wenn ueberhaupt, dann so:

    void ne_funktion(double a1[][1], double a2[][1], double a3[][2], double a4[][1])
    {
    ....
    }
    
    double dErgebnis1[26][1],dErgebnis2[5][1],dErgebnis3[26][2],dErgebnis4[5][1]={0};
    ne_funktion(dErgebnis1, dErgebnis2, dErgebnis3, dErgebnis4);
    

    du musst alle dimensionen bis auf die aeusserste (die ganz links) angeben.



  • danke c.rackwitz so funktioniert es.
    aber noch ne kleine frage
    array[50][2]
    hat das jetzt 51 zeilen und 3 Spalten,oder zwei spalten?
    und was ist mit '\0' muss ich das einplanen?

    wie genau weiße ich meinen arrays werte zu:
    dErgebnis=result;...?

    danke

    grüße

    rene 🕶



  • ein array[50][2]
    hat 50 zeilen und von denen hat jede 2 spalten. stells dir so vor:
    [0][0], [0][1], [1][0], [1][1], [2][0], [2][1], [3][0], [3][1], ..., [49][0], [49][1]
    wie du siehst, es geht von 0-1, und das wiederum von 0-49.
    der compiler uebernimmt fuer dich die berechnung des eigentlichen indexes: y*wx + x, wobei x und y die indices sind und wx in deinem fall die [2].

    das '\0' hat fuer dich erst bedeutung, wenn du mit strings umgehst.



  • ok ich glaub jetzt hab ich das gerafft.
    Ich glaub meine Zuweisung ist nicht richitg von den ergebnisarrays...?

    for (i = 0; i < 26; i++)
    {
    if (!preisach_t(par4[i], &result, 0))
    fprintf(stderr, "Berechnung von preisach() ist fehlgeschlagen.\n");
    else
    {
    printf("%g\t%g\n", par4[i], result);
    fvec[i] = result;

    dErgebnis1[i][0]=par4[i];
    dErgebnis1[i][1]=result;
    printf("dErgebnis1: %g\t%g\n",dErgebnis1[i][0],dErgebnis1[i][1]);
    }
    }

    grüße rene 😕



  • an dem kleinen stueck code nicht erkennbar


Anmelden zum Antworten