Comment trouver la longueur d'un tableau en C++ ? Problème avec sizeof et les pointeurs
Bonjour à tous ! Je suis un développeur C++ débutant et j'ai rencontré un problème très étrange. J'ai besoin de savoir combien d'éléments se trouvent dans un tableau, mais mes tentatives échouent.
J'écris ceci :
```cpp
int arr[] = {10, 20, 30, 40, 50};
int size = sizeof(arr) / sizeof(arr[0]);
cout << "Longueur du tableau : " << size; // Affiche 5 — tout est correct
```
Mais quand j'essaie de faire la même chose à l'intérieur d'une fonction, en passant le tableau comme paramètre, j'obtiens n'importe quoi :
```cpp
void printArrayLength(int arr[]) {
int size = sizeof(arr) / sizeof(arr[0]);
cout << "Longueur du tableau : " << size; // Affiche 1 ou 2, mais pas 5 !
}
int main() {
int myArray[] = {10, 20, 30, 40, 50};
printArrayLength(myArray);
return 0;
}
```
Pourquoi cela se produit-il ? sizeof(arr) à l'intérieur de la fonction ne donne pas la taille du tableau entier, mais quelque chose d'autre. J'ai lu sur les pointeurs, mais je ne comprends pas complètement le lien.
Existe-t-il un moyen fiable de connaître la longueur d'un tableau en C++ qui fonctionne partout ? Ou dois-je toujours passer la taille ?