web-dev-qa-db-fra.com

Taille C du tableau char *

J'ai un char* tableau comme suit:

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

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

Ce qui suit a fonctionné, mais est-ce correct?

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

Oui,

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

est la façon la plus courante de procéder.

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

35
sharptooth

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

sizeof tbl / sizeof *tbl

:)

14
AnT

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

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

Interprétation:

sizeof (tb1) donnera la taille de l'ensemble du tableau, c'est-à-dire tb1 = octets

sizeof (tb1 [0]) donne la taille du caractère car tb1 [0] donne une valeur de caractère (valeur à l'adresse tb1 + 0) = 1 octet

La division de ces deux vous donnera éléments

2
Mahesh