Reihenfolge von Array Inhalt in Speicher
-
Hey,
wenn ich ein Array habe:
float[2][2] texcoordIn 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] texcoordIn 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.