mehrdimensionale Arrays als Parameter
Verfasst: Mi Nov 28, 2012 12:50 am
Hallo,
Ich habe ein kleines Verständnisproblem zur Übergabe von mehrdimensionalen Arrays als Parameter.
Ausgabe:
8
12
Also, ich übergebe der Funktion <test(int arr[4][3])> ein zweidimensionales array, wobei ich explizit angebe wie viele "zeilen" und "spalten" das array haben soll. Ich weiß, dass eigentlich nur die 2. (und alle weiteren) Dimensionen angegeben werden müssen. Allerdings scheint es so als würde der Compiler die Angabe der ersten Dimension ignorieren, da "sizeof(arr)" 8-byte (also die größe eines zeigers bei 64 bit rechnern) und nicht die größe des arrays liefert. Er verhält sich also genauso, als hätte ich "int arr[][3]" als Parameter angegeben. Für sizeof(arr[0]) wird jedoch wie erwartet die grüße einer gesamten zeile (also 3 * 4 byte) ausgegeben. Hab ich da was falsch verstanden? oder wenn nicht, wieso ignoriert der Compiler die angabe?
lg Lars
Ich habe ein kleines Verständnisproblem zur Übergabe von mehrdimensionalen Arrays als Parameter.
Code: Alles auswählen
#include <iostream>
using namespace std;
int test(int arr[4][3]){
cout << sizeof(arr) << endl;
cout << sizeof(arr[0]) << endl;
return 0;
}
int main(){
int arr[4][3] = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
test(arr);
return 0;
}
8
12
Also, ich übergebe der Funktion <test(int arr[4][3])> ein zweidimensionales array, wobei ich explizit angebe wie viele "zeilen" und "spalten" das array haben soll. Ich weiß, dass eigentlich nur die 2. (und alle weiteren) Dimensionen angegeben werden müssen. Allerdings scheint es so als würde der Compiler die Angabe der ersten Dimension ignorieren, da "sizeof(arr)" 8-byte (also die größe eines zeigers bei 64 bit rechnern) und nicht die größe des arrays liefert. Er verhält sich also genauso, als hätte ich "int arr[][3]" als Parameter angegeben. Für sizeof(arr[0]) wird jedoch wie erwartet die grüße einer gesamten zeile (also 3 * 4 byte) ausgegeben. Hab ich da was falsch verstanden? oder wenn nicht, wieso ignoriert der Compiler die angabe?
lg Lars