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]);


Anmelden zum Antworten