Comprendre la taille du tableau tout en le transmettant à une autre fonction sans spécifier explicitement sa taille peut être un défi en C . Cette question est née de la nécessité d'exécuter une boucle au sein d'une fonction recevant un tableau en argument.
L'approche initiale, utilisant une vérification conditionnelle d'une valeur de pointeur NULL, s'est avérée insuffisante en raison de la présence potentielle de valeurs inattendues dans le tableau.
Une solution efficace en C implique d'exploiter des modèles et de transmettre le tableau par référence :
template <typename T, int N> void func(T (&a)[N]) { for (int i = 0; i < N; ++i) a[i] = T(); // reset all elements }
En spécifiant la taille du tableau N comme paramètre de modèle, la fonction connaît la taille exacte du tableau avec laquelle elle travaille. Cette approche garantit que la boucle parcourt le nombre d'éléments prévu.
Pour utiliser cette fonction de modèle, un tableau peut être transmis comme suit :
int x[10]; func(x);
C'est il est important de noter que cette approche ne fonctionne que pour les tableaux, pas pour les pointeurs. Pour une solution plus polyvalente, l'utilisation d'un conteneur de bibliothèque standard tel que std::vector pourrait être un choix préférable.
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!