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.
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen