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