strange array-problem
-
hallo.
main() {... double array[10]={0.0}; testFunction(array); ...} void testFunction(double array[]){ int laenge=sizeof(array); }wieso bekomme ich für die laenge 4 und nicht 10?
-
Weil Arrays beim ersten Anzeichen einer Gefahr auf einen Zeiger auf ihr erstes Element zerfallen. Auch wenn es anders aussieht, ist testFunction::array ein einfacher 'double*' (und hat keine Ahnung, wie groß das dahinterliegende Array ist).
PS: Auch im Hauptprogramm würde sizeof(array) nicht den Wert 10 liefern

-
..also doch etwas strange

d.h. ich habe keine möglichkeit die länge meines double arrays zu bestimmen,oder?
-
woldo schrieb:
d.h. ich habe keine möglichkeit die länge meines double arrays zu bestimmen,oder?
Doch, aber nur in der Funktion, in der es angelegt wurde (d.h. in der main()-Funktion*) - wenn du die Größe irgendwo anders benötigst, mußt du sie der jeweiligen Funktion explizit mitteilen.
Alternativ kannst du anstelle des Arrays auch std::vector oder CArray verwenden - die verwalten ihre Größe selber.
* sizeof() liefert die Größe einer Variablen in BYTE - um die Array-Länge zu ermitteln, mußt du den Wert durch die Elementgröße dividieren:
laenge=sizeof(array)/sizeof(array[0]);