Felder eines Arrays berechnen.



  • Hallo, ich bin relativ am Anfang mit der Programmiersprache C.
    ich muss auf der Arbeit etwas programmieren und sitz jetzt an einem bug in meinem Programm seid knapp einer Woche. Ich weiß einfach nicht mher weiter, ich konnte das Problem soweit eingrenzen (siehe code), ich hoff ihr könnt mir einen Tipp geben, warum sich der Wert in v1[0] ändert (hinter meinem Kommentar)
    obwohl v2[1] berechnet wird. Vielen Dank und Grüße
    maggo

    int main(void){
    double Absorber_1[1], Absorber_2[1], Source_1[1], Source_2[1];
    double v1[1];
    double v2[1];
    double v3[1];
    double vh[1];

    Absorber_1[0]=-1;
    Absorber_1[1]=0;
    Absorber_2[0]=1;
    Absorber_2[1]=0;
    Source_1[0]=-3;
    Source_1[1]=10;
    Source_2[0]=3;
    Source_2[1]=10;

    v1[0]=Source_2[0]-Absorber_2[0];
    v1[1]=Source_2[1]-Absorber_2[1];

    printf("v1[0] = %lf, v1[1] = %lf \n\n ",v1[0],v1[1]);

    v2[0] = Source_1[0]-Absorber_2[0];
    printf("v1[0] = %lf, v1[1] = %lf \n\n ",v1[0],v1[1]);

    //Warum ändert sich der Wert von v1[0] nach der nächsten Befehlszeile??
    //obwohl doch auf das array v1[] nicht zugegriffen wird.

    v2[1] = Source_1[1]-Absorber_2[1];
    printf("v1[0] = %lf, v1[1] = %lf \n\n ",v1[0],v1[1]);

    return;
    }



  • Du schreibst über Array grenzen hinweg. Du hast Arrays mit der Länge 1 angelegt, dass heißt die Indizes laufen von 0 bis 0. Wenn du auf den Eintrag mit dem Index 1 zugreifst, schreibst du irgendwohin in den Speicher, d.h. irgendeine beliebige Variable wird einfach verändert.

    int v[1];
      v[0] = 42; /* erlaubt */
      v[1] = 99; /* nicht erlaubt, macht irgendwas kaputt */
    


  • Vielen vielen Dank, obwohl ich mir gerade gemwerkt hatte, dass arrays von 0 anfangen zu zählen und dachte mit der Anzahl an Feldern [1] schon [0]und [1]
    mit inbegriffen wären. egal jedenfalls, werd ich mir das kapitel nohcmal genauer durchlesen, jedenfalls hab ich jetzt ein riesieges grinsen und kann mich auf die Suche nach dem nächsten bug machen, wenn der irgendwann mit dem Rest des codes kommt. 🙂
    also du hast einen Menschen gerade sehr glücklich gemacht! vielen dank und einen schönen Sonntag noch 😉
    maggoleinchen


Anmelden zum Antworten