Détermination de la taille d'un tableau dans une fonction passée
Le problème se pose en C , où déterminer la taille d'un tableau passé à une fonction pose un problème défi en raison de l'incapacité de sizeof à capturer avec précision la longueur du tableau.
Une solution populaire suggère de terminer la boucle lorsque l'élément du tableau array[i] atteint NULL. Cependant, cette approche peut conduire à des erreurs, car array[i] contient parfois des valeurs aléatoires vers la fin du tableau.
Solution basée sur un modèle avec références de tableau
C offre une solution plus fiable grâce à des modèles et des références de tableau :
template <typename T, int N> void func(T (&a)[N]) { for (int i = 0; i < N; ++i) a[i] = T(); // reset all elements }
Cette fonction basée sur un modèle prend un tableau a de type T avec une taille fixe de N. En utilisant l'opérateur de référence &, il lie le tableau d'origine à a, permettant d'accéder aux éléments du tableau sans transmettre explicitement la taille.
Pour utiliser cette fonction, déclarez simplement un tableau et transmettez-le par référence :
int x[10]; func(x);
Il est important de noter que cette solution s'applique uniquement aux tableaux, pas aux pointeurs. Pour les tableaux basés sur des pointeurs, une meilleure option consiste à utiliser le conteneur std::vector de la bibliothèque de modèles standard (STL), qui fournit des capacités d'accès à la taille et aux éléments.
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!