Avatar ·

Como encontrar o comprimento de um array em C++? Problema com sizeof e ponteiros

Olá a todos! Sou um desenvolvedor C++ iniciante e me deparei com um problema muito estranho. Preciso saber quantos elementos existem em um array, mas minhas tentativas estão falhando. Eu escrevo assim: ```cpp int arr[] = {10, 20, 30, 40, 50}; int size = sizeof(arr) / sizeof(arr[0]); cout << "Comprimento do array: " << size; // Mostra 5 — tudo correto ``` Mas quando tento fazer o mesmo dentro de uma função, passando o array como parâmetro, obtenho algo sem sentido: ```cpp void printArrayLength(int arr[]) { int size = sizeof(arr) / sizeof(arr[0]); cout << "Comprimento do array: " << size; // Mostra 1 ou 2, mas não 5! } int main() { int myArray[] = {10, 20, 30, 40, 50}; printArrayLength(myArray); return 0; } ``` Por que isso acontece? sizeof(arr) dentro da função não retorna o tamanho do array inteiro, mas o quê?