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