Frage zur Größenbestimmung eines Arrays in einer Funktion
-
Hallo,
Bei folgender Funktion hab ich ein Problem:
int groese(int array[]) { return(sizeof(array)/sizeof(int)) }wenn ich jetzt in der main z.B.
int test[3]={1,2,3}; cout<<sizeof(array)/sizeof(int)<<endl; cout<<groese(test);eingebe, erhalte ich beim ersten cout die richtige größe beim zweiten aber immer eins.
Kann mir da jemand helfen?
Vielen Dank schon im Voraus
UPPPSS: Falsches Forum. Sorry
. Wenn möglich verschieben
-
hoffe ich versteh dich richtig
hier is meine lösung:#define GetArraySize(x) (sizeof(x) / sizeof(x[0])) int test[3] = {1,2,3}; cout << GetArraySize(test);
-
Ein Array wird wohl selten als Array übergeben, sondern als Pointer auf seinen Anfang. Somit ist es in einer funktion à la
foo(bar* array);nicht mehr möglich, die Größe des Speicherbereichs herauszubekommen -sizeof()gibt dir dann die Größe des Pointers.greetz, Swordfish
-
std::vector nehmen oder größe mit übergeben
-
okay, ich werd die methode mit der Größe übergeben nutzen.
Vielen Dank an alleedit: Woh-XD deine Methode funktioniert auch

-
Fencer schrieb:
edit: Woh-XD deine Methode funktioniert auch

Mit Einschränkungen - faktisch ist das identisch mit deinem Ansatz, nur hinter einem Makro versteckt (und funktioniert demzufolge nur, wenn du das Array in Reinform vorliegen hast).