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ê?