Avatar ·

Wie finde ich die Länge eines Arrays in C++? Problem mit sizeof und Zeigern

Hallo zusammen! Ich bin ein Anfänger in C++ und bin auf ein sehr seltsames Problem gestoßen. Ich muss herausfinden, wie viele Elemente in einem Array sind, aber meine Versuche schlagen fehl. Ich schreibe so: ```cpp int arr[] = {10, 20, 30, 40, 50}; int size = sizeof(arr) / sizeof(arr[0]); cout << "Länge des Arrays: " << size; // Gibt 5 aus – alles korrekt ``` Aber wenn ich versuche, dasselbe innerhalb einer Funktion zu tun, indem ich das Array als Parameter übergebe, bekomme ich Unsinn: ```cpp void printArrayLength(int arr[]) { int size = sizeof(arr) / sizeof(arr[0]); cout << "Länge des Arrays: " << size; // Gibt 1 oder 2 aus, aber nicht 5! } int main() { int myArray[] = {10, 20, 30, 40, 50}; printArrayLength(myArray); return 0; } ``` Warum passiert das? sizeof(arr) innerhalb der Funktion gibt nicht die Größe des gesamten Arrays zurück, sondern etwas anderes. Ich habe über Zeiger gelesen, verstehe aber nicht ganz, wie das zusammenhängt. Gibt es eine zuverlässige Methode, um die Länge eines Arrays in C++ zu ermitteln, die überall funktioniert? Oder muss ich immer die Größe übergeben?