Hallo, hier mal Code den zumindest der Compiler schluckt. Ausprobiert hab ich's nicht.
int statistics(float numbers, int length, float mean, float *std) { float mean_value = compute_mean(numbers, length); float std_dev_value = compute_std_dev(numbers, length);
*mean = mean_value;
*std = std_dev_value;
return length != 0;
}
void test(void) {
float numbers[] ={1.0, 2.0, 3.0};
float mean;
float std_dev;
if (statistics(numbers, sizeof(numbers) / sizeof(numbers[0]), &mean, &std_dev) == TRUE)
{ /* code */ }
}
Da ich normalerweise Steuerungen programmiere verwende ich kein float. Daher bin ich mir nicht ganz sicher ob das Konstrukt sizeof(numbers) / sizeof(numbers[0]) hier auch funktioniert. Da es aber bei allem, auch struct und union geht sollte es bei float auch gehen.
LG jobe
PS Die Formatierung dieses Editors lässt zu wünschen übrig oder ich habe sie noch nicht kapiert. Der C Code wird gräuslich dargestellt.
Sonstiger Berufsstatus, Punkte: 505
Hallo, sizeof() liefert immer den Platzbedarf in Bytes. sizeof(long); liefert 4.
long xxx[10]; sizeof(xxx); liefert 40, sizeof(xxx[0]) liefert 4.
Somit liefert (sizeof(xxx) / sizeof(xxx[0]) die 10. Muss immer gehen.
Natürlich könnte man auch sizeof(xxx[5]) nehmen. Get auch, macht aber keiner. LG jobe
Markdown wird unterstützt.
vielen Dank für deine Antwort, habe es mal so übernommen, soweit ich weiß darf man sizeof(string) / sizeof(string[0] nur für strings verwenden, kann mich aber auch irren bin nur Anfänger ^^ danke für deine Antwort
─ unknown 22.01.2020 um 13:01