Avatar ·

¿Cómo encontrar la longitud de un array en C++? Problema con sizeof y punteros

¡Hola a todos! Soy un desarrollador principiante de C++ y me encontré con un problema muy extraño. Necesito saber cuántos elementos hay en un array, pero mis intentos fallan. Escribo así: ```cpp int arr[] = {10, 20, 30, 40, 50}; int size = sizeof(arr) / sizeof(arr[0]); cout << "Longitud del array: " << size; // Muestra 5 — todo correcto ``` Pero cuando intento hacer lo mismo dentro de una función, pasando el array como parámetro, obtengo algo sin sentido: ```cpp void printArrayLength(int arr[]) { int size = sizeof(arr) / sizeof(arr[0]); cout << "Longitud del array: " << size; // Muestra 1 o 2, ¡pero no 5! } int main() { int myArray[] = {10, 20, 30, 40, 50}; printArrayLength(myArray); return 0; } ``` ¿Por qué sucede esto? sizeof(arr) dentro de la función no devuelve el tamaño de todo el array, sino otra cosa. He leído sobre punteros, pero no entiendo completamente cómo se relaciona. ¿Hay alguna forma confiable de conocer la longitud de un array en C++ que funcione en todas partes? ¿O necesito siempre pasar el tamaño?