Problem mit Speicherreservierung ?



  • Hallo 🙂
    ich hab hier folgendes kleines Ding :

    #include <stdio.h>
    #include <stdlib.h>
    #define Laenge 100
    
    void sum_average (float a[], int n, float* avg, float* sum);
    
    int main()
    {
          float a[Laenge];
          float* avg;
          float* sum;
          float zahl;
          int i;
    
          printf("Zahl = "); scanf("%f", &zahl);
          srand (zahl);
    
          for ( i = 0; i<Laenge; i++) {
              a[i]=rand();
              printf("\na[%d] = %f", i, a[i]);
          }
    
          sum_average ( a, Laenge, avg, sum);
    
          printf("\nsum = %f", *sum);
          printf("\navg = %f", *avg);
    
          return 0;
    }
    
    void sum_average (float a[], int n, float* avg, float* sum) {
    
          int i;
          *sum = 0.0;
          for (i = 0; i < n; i++)
              *sum += a[i];
          *avg = *sum / n;
    }
    

    Das Programm funktioniert wie es soll, aber wenn ich jetzt zB Laenge mit 50 festlege dann stürzt das Programm beim ausführen ab 😮



  • Änderunsvorschlag:

    float* avg;
    float* sum;
    sum_average ( a, Laenge, avg, sum);
    printf("\nsum = %f", *sum);
    printf("\navg = %f", *avg);
    

    in

    float avg;
    float sum;
    sum_average(a, Laenge, &avg, &sum);
    printf("\nsum = %f", sum);
    printf("\navg = %f", avg);
    

    Ich hoffe dir wird dabei klar, warum das falsch war. Wenn nicht frag nach.



  • ja doch.. leuchtet mir ein 🙂 ich kann mich irgendwie nicht mit Pointern anfreunden *g*
    aber warum funktioniert es bei 100, aber bei 50 nicht ?
    Die Funktion selber muß ich nicht verändern oder ?



  • Original erstellt von raffnix:
    aber warum funktioniert es bei 100, aber bei 50 nicht ?

    Keine Ahnung. Zufall.

    **
    Die Funktion selber muß ich nicht verändern oder ?**

    die ist ok



  • danke 😉


Anmelden zum Antworten