C sizeof char* tableau

J'ai un tableau char* comme suit:

char *tbl[] = { "1", "2", "3" };

Comment utiliser l'opérateur sizeof pour obtenir le nombre d'éléments du tableau, ici 3?

Le ci-dessous a fonctionné, mais est-ce correct?

int n = sizeof(tbl) / sizeof(tbl[0]) 
28
demandé sur Ayman 2009-10-13 16:33:06

3 réponses

Oui

size_t n = sizeof(tbl) / sizeof(tbl[0])

Est la façon la plus typique de le faire.

Veuillez noter que l'utilisation de int pour les tailles de tableau n'est pas la meilleure idée.

34
répondu sharptooth 2015-09-16 06:43:28

La version plus courte et, sans doute, plus propre ressemblerait à

sizeof tbl / sizeof *tbl

:)

14
répondu AnT 2009-10-13 16:46:22

Oui, il vous donnera le nombre d'éléments dans le tableau tb1.

int n = sizeof(tbl) / sizeof(tbl[0])

l'Interprétation:

Sizeof (tb1) {[6] } donnera la taille du tableau entier, c'est-à-dire, tb1 = 3 octets

Sizeof(tb1[0]) donne la taille de caractère comme tb1[0] donne une valeur de caractère(valeur à l'adresse tb1+0) = 1 byte

Division de ces deux vous donnera 3 éléments de

2
répondu Mahesh 2013-08-07 15:12:03