[C++] Nombre d'éléments d'un tableau dynamique ???

Nombre d'éléments d'un tableau dynamique ??? [C++] - Programmation

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 :hello:


---------------
Du temps à perdre ? -> http://www.juju-le-barbare.fr.fm
Reply

Marsh Posté le 28-08-2002 à 22:13:24   

Reply

Marsh Posté le 28-08-2002 à 22:37:18    

ben tu fais
std::vector<char> v;
v.size();


Message édité par verdoux le 28-08-2002 à 22:37:42
Reply

Marsh Posté le 28-08-2002 à 22:55:10    

a  est un pointeur de caractere, pas un tableau

Reply

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];


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed