Détermination de la taille d'un tableau lors du passage à des fonctions en C
Contrairement à la fonction principale, où sizeof() renvoie directement la taille d'un tableau , passer un tableau à une fonction nécessite une prise en compte en raison de la dégradation du tableau vers les pointeurs.
Array Decay to Pointeurs
Lorsqu'ils sont passés en argument, les tableaux se désintègrent en pointeurs vers leur premier élément. Cela signifie que l'expression sizeof(some_list) dans une fonction donnera la taille du pointeur, pas la taille de l'ensemble du tableau.
Problème de rapport de taille
Utilisation l'expression (sizeof(some_list)/sizeof(*some_list)) pour calculer la taille du tableau ne fonctionne pas car :
Ce rapport donne toujours 1, quel que soit le tableau taille. Ainsi, la fonction length_of_array renvoie toujours 1.
Méthode alternative utilisant des modèles
Pour déterminer avec précision la taille d'un tableau lorsqu'il est transmis à une fonction, utilisez un modèle :
template<size_t N> int length_of_array(int (&arr)[N]) { return N; }
Cette approche utilise un paramètre de modèle N pour spécifier la taille du tableau, qui est ensuite renvoyée par la fonction.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!