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

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

DDD
Libérer: 2024-12-20 15:41:13
original
696 Les gens l'ont consulté

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

Détermination de la taille du tableau lorsqu'il est transmis en tant qu'argument de fonction

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.

Approche C utilisant des modèles

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 (&amp;a)[N]) {
    for (int i = 0; i < N; ++i) a[i] = T(); // reset all elements
}
Copier après la connexion

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

Considérations

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal