2009-09-15 8 views
2

Je lisais l'amorce C++ et cet extrait de code est apparu et je me demandais ce que fait sizeof (char *) et pourquoi est-ce si important?Que fait sizeof (char *)?

char *words[] = {"stately", "plump", "buck", "mulligan"}; 

// calculate how many elements in words 
size_t words_size = sizeof(words)/sizeof(char *); 

// use entire array to initialize words2 
list<string> words2(words, words + words_size); 

Merci d'avance.

Répondre

8

Parce que sinon, vous obtiendrez le nombre d'octets tableau mots prend, pas le nombre d'éléments (pointeurs char sont soit 4 ou 8 octets sur les architectures Intel)

+0

Merci pour votre réponse rapide, je pensais que sizeof renvoyait le nombre d'éléments et non le nombre d'octets. –

+1

Des pointeurs de 2 octets sont également possibles sur certaines architectures Intel. –

6

sizeof(char*) retourne la taille du pointeur du système. sizeof (words) renvoie le nombre d'octets dans le tableau. Comme chaque élément du tableau est de taille sizeof(char*), le nombre d'éléments est number_of_bytes/bytes_per_element, donc sizeof(words)/sizeof(char*).