Maison > développement back-end > C++ > Comment puis-je déterminer de manière fiable la taille d'un tableau transmis à une fonction C ?

Comment puis-je déterminer de manière fiable la taille d'un tableau transmis à une fonction C ?

Susan Sarandon
Libérer: 2024-12-30 02:53:28
original
799 Les gens l'ont consulté

How Can I Reliably Determine the Size of an Array Passed to a C   Function?

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
}
Copier après la connexion

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);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal