Avatar ·

Was ist Array-to-Pointer Decay in C++?

Hallo Kollegen! Ich habe gerade angefangen, C++ zu lernen und bin auf ein sehr seltsames Verhalten von Arrays gestoßen. Wenn ich ein Array an eine Funktion übergebe und versuche, seine Größe mit `sizeof` zu ermitteln, bekomme ich nicht das, was ich erwarte.\n\nHier ist ein Beispiel:\n\n```cpp\n#include \n\nvoid printSize(int arr[]) {\n std::cout << "Innerhalb der Funktion: " << sizeof(arr) << " Bytes" << std::endl;\n}\n\nint main() {\n int numbers[5] = {1, 2, 3, 4, 5};\n std::cout << "In main: " << sizeof(numbers) << " Bytes" << std::endl; // Gibt 20 aus (5 * 4)\n printSize(numbers); // Gibt 8 aus (Größe eines Pointers) auf einem 64-Bit-System\n return 0;\n}\n```\n\nIch habe erwartet, dass `sizeof(arr)` innerhalb der Funktion ebenfalls 20 zurückgibt, aber ich bekomme 8. Warum passiert das? Ich habe den Begriff "array decay" gehört, verstehe aber nicht ganz, was das bedeutet.