Maison >développement back-end >C++ >Comment déterminer la taille d'un tableau passé en argument de fonction en C ?

Comment déterminer la taille d'un tableau passé en argument de fonction en C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-09 10:36:02661parcourir

How to Determine the Size of an Array Passed as a Function Argument in C  ?

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 (&amp;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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn