0
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.
Diese Antwort melden
Link
geantwortet
jobe
Sonstiger Berufsstatus, Punkte: 505
Sonstiger Berufsstatus, Punkte: 505
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
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
─
jobe
22.01.2020 um 20:16
Markdown wird unterstützt.