web-dev-qa-db-fra.com

Comment trouver la taille d'un tableau d'entiers

Comment trouver la taille d'un tableau entier en C.

Toute méthode disponible sans traverser le tableau entier une fois, pour connaître la taille du tableau.

25
AGeek

Si le tableau est une variable globale, statique ou automatique (int array[10];), Alors sizeof(array)/sizeof(array[0]) fonctionne.

S'il s'agit d'un tableau alloué dynamiquement (int* array = malloc(sizeof(int)*10);) ou passé comme argument de fonction (void f(int array[])), vous ne pouvez pas trouver sa taille au moment de l'exécution. Vous devrez stocker la taille quelque part.
Notez que sizeof(array)/sizeof(array[0]) compile très bien même pour le deuxième cas, mais il produira silencieusement le mauvais résultat.

81
sbi

Si le tableau est alloué de manière statique:

size_t size = sizeof(arr) / sizeof(int);

si le tableau est alloué dynamiquement (tas):

int *arr = malloc(sizeof(int) * size);

où la taille variable est une dimension de l'arr.

4
user333453

_msize(array) sous Windows ou malloc_usable_size(array) sous Linux devrait fonctionner pour le tableau dynamique

Les deux sont situés dans malloc.h et renvoient tous les deux un size_t

3
Noobay