Détermination de la taille d'un tableau dans les paramètres de fonction C
Contrairement à la fonction principale, déterminer la taille d'un tableau passé en argument à une fonction en C, l'utilisation de sizeof() nécessite un modèle de référence. En effet, les tableaux se désintègrent en pointeurs lorsqu'ils sont transmis à des fonctions.
Array Decay to Pointers
Considérez l'extrait de code suivant :
int length_of_array(int some_list[]);
Malgré la déclaration entre crochets, some_list se désintègre en un pointeur entier int* lorsqu'elle est passée en argument. Par conséquent, sizeof(some_list) renvoie la taille d'un pointeur, pas la taille du tableau.
Solution de modèle de référence
Pour déterminer correctement la taille d'un tableau, utilisez un modèle de référence. Par exemple :
template<size_t N> int length_of_array(int (&arr)[N]) { std::cout << N << std::endl; // Outputs the correct array size return N; }
Exception : tableaux multidimensionnels
Il existe une exception à la règle de désintégration des tableaux. Les tableaux multidimensionnels conservent leur dimensionnalité et ne sont pas transmis comme pointeurs. Par conséquent, sizeof() peut être utilisé directement pour déterminer leur taille :
int a[3][4]; std::cout << sizeof(a) / sizeof(a[0]); // Output: 4 (number of columns)
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!