Maison > développement back-end > C++ > Comment puis-je obtenir la taille d'un tableau lors de l'utilisation de pointeurs en C ?

Comment puis-je obtenir la taille d'un tableau lors de l'utilisation de pointeurs en C ?

Susan Sarandon
Libérer: 2024-12-03 05:41:10
original
313 Les gens l'ont consulté

How Can I Get the Size of an Array When Using Pointers in C  ?

Obtenir la taille d'un tableau à l'aide d'un pointeur en C

Déterminer le nombre d'éléments dans un tableau est crucial lorsqu'on opère sur des tableaux. Cependant, lorsque vous travaillez avec des tableaux comme pointeurs en C , cette tâche devient difficile.

C hérite de "l'équivalence tableau/pointeur" de C. Les tableaux peuvent se décomposer en pointeurs lorsqu'ils sont passés comme arguments de fonction, permettant un code comme :

void func(int* ptr);

int array[5];
int* ptr = array; // equivalent to 'ptr = &array[0]'
func(array); // equivalent to 'func(&array[0]);'
Copier après la connexion

Dans votre cas, vous transmettez un pointeur vers les éléments du tableau au lieu du tableau lui-même. Par conséquent, le pointeur seul ne contient pas d'informations sur la taille.

Pour gérer cela, vous devez explicitement transmettre la taille comme argument supplémentaire :

static const size_t ArraySize = 5;
int array[ArraySize];
largest(array, ArraySize);
Copier après la connexion

Personnalisation de la fonction pour accepter le pointeur de tableau et sa taille directement :

int largest(int* array, size_t size);
Copier après la connexion

Vous pouvez également exploiter le sucre syntaxique pour définir le tableau avec un fixe size :

void func(int array[5]);
Copier après la connexion

Cependant, il s'agit d'un sucre syntaxique pour une déclaration de pointeur de tableau :

void func(int* array);
Copier après la connexion

Lorsque vous avez le tableau lui-même et pas seulement un pointeur, vous pouvez obtenir le nombre de éléments utilisant :

sizeof(array) / sizeof(array[0]);
Copier après la connexion

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 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