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.
Hier ist ein Beispiel:
```cpp
#include
void printSize(int arr[]) {
std::cout << "Innerhalb der Funktion: " << sizeof(arr) << " Bytes" << std::endl;
}
int main() {
int numbers[5] = {1, 2, 3, 4, 5};
std::cout << "In main: " << sizeof(numbers) << " Bytes" << std::endl; // Gibt 20 aus (5 * 4)
printSize(numbers); // Gibt 8 aus (Größe eines Zeigers) auf einem 64-Bit-System
return 0;
}
```
Ich 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
Blogs
Mikroservices mit Rust: Wo man anfängt und nicht den Verstand verliert
Algorithmen und Datenstrukturen in Kotlin: Ein praktischer Leitfaden
HTTP-Client in TypeScript: Anfragen richtig stellen von A bis Z
Reguläre Ausdrücke in JavaScript mit Beispielen: in der Praxis