Wie man Arrays in C++ richtig verwendet: von statischen bis zu dynamischen Arrays und std::array
Hallo zusammen! Ich habe gerade angefangen, C++ nach Python zu lernen, und ich habe völlige Verwirrung mit Arrays. In Python habe ich einfach `arr = [1, 2, 3]` geschrieben, und alles hat funktioniert. Aber hier...
Ich versuche, ein einfaches Programm zu schreiben, das 5 Zahlen speichert und ihre Summe ausgibt. Ich habe Folgendes geschrieben:
```cpp
int arr[5];
arr = {1, 2, 3, 4, 5};
```
Aber der Compiler meckert: "array type 'int[5]' is not assignable". Okay, ich habe versucht, es direkt zu initialisieren:
```cpp
int arr[5] = {1, 2, 3, 4, 5};
```
Das hat funktioniert. Aber dann musste ich dieses Array an eine Funktion übergeben. Ich habe geschrieben:
```cpp
void printSum(int arr[]) {
int sum = 0;
for(int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++) {
sum += arr[i];
}
cout << sum;
}
```
Und hier ist es total seltsam — `sizeof(arr)` gibt 8 zurück (Größe eines Pointers?), nicht 20 (5 * 4 Bytes). Warum ist das so?
Außerdem habe ich über `std::vector` und `std::array` gelesen, aber ich verstehe nicht, wann man was verwenden soll. Ich habe auch gesehen, wie Leute `int* arr = new int[5]` schreiben — das ist total Magie.