Nombre d'éléments d'un tableau dynamique ??? [C++] - Programmation
Marsh Posté le 28-08-2002 à 22:37:18
ben tu fais
std::vector<char> v;
v.size();
Marsh Posté le 28-08-2002 à 23:34:47
Je suppose que c'est
int a[256];
et pas
char a[256];
(chez moi sizeof(char) = 1)
perso, je fait
#define A_SIZE 256
int a[A_SIZE];
le sizeof(a) j'aime pas ...
pour les éléments dynamiques, ben tu créés un variable dans laquelle tu stockes la taille ...
int b_size = 256;
char * b = new char[b_size];
Marsh Posté le 28-08-2002 à 23:45:00
sizeof est un opérateur résolu à la compilation.
Donc comme dynamique implique taille connue a l'exécution
c'est normal que ca ne marche pas.
Ceci dit sizeof dans le cas d'un tableau c'est juste du sucre syntaxique pour que le programmeur n'ait pas a faire le calcul lui-meme. Evidemment ca ne marche pas pour un tableau dynamique mais comme on dit il y a de la limite à la paresse du programmeur .
LeGreg
Marsh Posté le 28-08-2002 à 22:13:24
Bonjour,
Imaginons que je créé un tableau statique 'a' de 256 int (int de 4 octets) :
char a[256];
* pour connaitre la taille du tableau je fais :
sizeof(a); /*1024*/
* pour connaitre la taille d'un élément (d'un int donc) je fais :
sizeof(a[0]); /*4*/
* pour connaitre le nombre d'éléments de ce tableau je fais :
sizeof(a)/sizeof(a[0]); /*256*/
Maintenant imaginons qu'il s'agisse d'un tableau dynamique b avec les mêmes caractéristiques :
char *b = new char[256];
* pour connaitre la taille du tableau je fais :
sizeof(a); /*??? J'ai la taille du pointeur, soit 4 !*/
* pour connaitre la taille d'un élément (d'un int donc) je fais :
sizeof(a[0]); /*4 ici ça roule*/
* pour connaitre le nombre d'éléments de ce tableau je fais :
sizeof(a)/sizeof(a[0]); /*Logiquement j'ai 4/4 soit 1, mais pas 256 */
Donc pour manipuler les tableaux dynamiques, ça marche comment ???
Merci
---------------
Du temps à perdre ? -> http://www.juju-le-barbare.fr.fm