Avatar ·

Cómo usar correctamente arrays en C++: desde estáticos hasta dinámicos y std::array

¡Hola a todos! Acabo de empezar a aprender C++ después de Python, y tengo un lío total con los arrays. En Python simplemente escribía `arr = [1, 2, 3]` y todo funcionaba. Pero aquí... Estoy intentando hacer un programa simple que almacene 5 números y muestre su suma. Escribí esto: ```cpp int arr[5]; arr = {1, 2, 3, 4, 5}; ``` Pero el compilador se queja: "array type 'int[5]' is not assignable". Bueno, probé a inicializar directamente: ```cpp int arr[5] = {1, 2, 3, 4, 5}; ``` Esto funcionó. Pero luego necesité pasar este array a una función. Escribí: ```cpp void printSum(int arr[]) { int sum = 0; for(int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++) { sum += arr[i]; } cout << sum; } ``` Y aquí algo extraño — `sizeof(arr)` devuelve 8 (¿tamaño de un puntero?), no 20 (5 * 4 bytes). ¿Por qué pasa esto? Además, leí sobre `std::vector` y `std::array`, pero no entiendo cuándo usar cada uno. También vi que la gente escribe `int* arr = new int[5]` — eso es como magia. Explíquenme, por favor.