Como usar arrays corretamente em C++: de estáticos a dinâmicos e std::array
Olá a todos! Comecei a estudar C++ depois do Python e estou completamente confuso com arrays. Em Python, eu simplesmente escrevia `arr = [1, 2, 3]` e tudo funcionava. Mas aqui...
Estou tentando fazer um programa simples que armazena 5 números e exibe a soma deles. Escrevi assim:
```cpp
int arr[5];
arr = {1, 2, 3, 4, 5};
```
Mas o compilador reclama: "array type 'int[5]' is not assignable". Ok, tentei inicializar diretamente:
```cpp
int arr[5] = {1, 2, 3, 4, 5};
```
Isso funcionou. Mas depois precisei passar esse array para uma função. Escrevi:
```cpp
void printSum(int arr[]) {
int sum = 0;
for(int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++) {
sum += arr[i];
}
cout << sum;
}
```
E aí veio a estranheza — `sizeof(arr)` retorna 8 (tamanho de um pointer?), e não 20 (5 * 4 bytes). Por que isso?
Além disso, li sobre `std::vector` e `std::array`, mas não entendo quando usar cada um. Também vi pessoas escrevendo `int* arr = new int[5]` — isso é magia negra?