Maison > développement back-end > C++ > Comment puis-je obtenir la taille d'un tableau passé comme pointeur en C ?

Comment puis-je obtenir la taille d'un tableau passé comme pointeur en C ?

Patricia Arquette
Libérer: 2024-12-22 03:52:12
original
262 Les gens l'ont consulté

How Can I Get the Size of an Array Passed as a Pointer in C  ?

Obtenir la taille d'un tableau à partir d'un pointeur en C

En C, déterminer la taille d'un tableau passé en tant que pointeur peut être difficile. Les tableaux présentent une « équivalence tableau/pointeur », où un tableau peut se décomposer en un pointeur lorsqu'il est passé comme argument de fonction. Cela pose le problème de déterminer la taille du tableau avec précision.

Pour pallier ce problème, on ne peut pas s'appuyer sur sizeof() car elle renvoie la taille du pointeur, qui est généralement de 4 ou 8 octets, et non le nombre de éléments du tableau. Au lieu de cela, nous devons explicitement transmettre la taille du tableau comme argument supplémentaire.

Solution :

Modifiez l'en-tête de la fonction pour inclure un paramètre pour la taille du tableau :

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

Passez la taille du tableau avec le pointeur vers le function :

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

En transmettant explicitement la taille, la fonction peut déterminer de manière appropriée le nombre d'éléments dans le tableau.

Approche alternative :

Si nous n'avons qu'un pointeur vers le tableau et non la variable du tableau d'origine, nous pouvons calculer la taille en utilisant ce qui suit formule :

size = sizeof(pointer_variable) / sizeof(array_element_type)
Copier après la connexion

Par exemple, si nous avons un pointeur int *ptr vers un tableau d'entiers de taille inconnue, nous pouvons déterminer la taille comme suit :

size = sizeof(ptr) / sizeof(int);
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!

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