Reihenfolge von Array Inhalt in Speicher



  • Hey,

    wenn ich ein Array habe:

    float[2][2] texcoord
    

    In welcher Reihenfolge werden die 4 floats im Speicher abgelegt?

    [0][0], [0][1], [1][0], [1][1] ?

    Danke,
    Tim



  • nicht definiert.



  • Meines Wissens nach ist das definiert und zwar in der oben genannten Reihenfolge.

    Gruss Kimmi



  • Natürlich ist es definiert und zwar so wie Timmy geschrieben hat.

    Interessanterweise findet die Speicherung in Fortran genau umgekehrt statt,
    also [0][0], [1][0], [0][1], [1][1]



  • xindon schrieb:

    wenn ich ein Array habe:

    float[2][2] texcoord
    

    In welcher Reihenfolge werden die 4 floats im Speicher abgelegt?

    Das kann man sich ganz einfach ueberlegen. Es gibt ja in C++ keine zweidimensionalen Arrays, d.h.

    float texcoord[2][2];
    

    ist eigentlich ein Array mit 2 Elementen. Diese Elemente sind dann jeweils wieder Arrays mit 2 Elementen vom Typ float. Nur welche Dimension ist welche? Mal Klammern setzen (nicht nur zur Veranschaulichung, das ist syntaktisch erlaubt):

    float (texcoord[2])[2];
    

    Jetzt wirds aber haarig, weil man das auch gut genau verkehrt herum interpretieren kann, wenn man nicht aufpasst. Also alles haarklein: Wir deklarieren texcoord als ein Array mit 2 Elementen (innerer Deklarator: texcoord[2]). Ein Element dieses Arrays ist wieder ein Array mit 2 Elementen (aeusserer Deklarator: (...)[2]). Diese Elemente sind vom Typ float.

    Das Array, was tatsaechlich floats enthaelt, entspricht also der aeusseren Dimension bzw. der am weitesten rechts.


Anmelden zum Antworten