int a[10];
for(int i=0;i<5;i++)
{
a[i]=i;
}
int len=sizeof(a)/sizeof(int);
print("%d",len);
This above code prints 10, but the actual number of elements present is 5.
Help needed.This wont be a problem if its a char array, but here integer array is causing pain.
4 Réponses :
Ce code ci-dessus imprime 10, mais le nombre réel d'éléments présents est de 5
Non, le nombre réel d'élément est de 10. Vous n'avez pas renseigné de valeur pour la stocker, c'est différent, mais cela ne change pas la dimension du tableau.
Si vous avez besoin de garder une trace des éléments utilisés / exploités , vous devez le faire vous-même en gérant un compteur quelque part.
Sinon, si vous pouvez vous assurer que
Vous pouvez utiliser une valeur sentinelle , (analogue au terminateur nul dans char array), et en utilisant cela, vous pouvez trouver le nombre d'éléments utilisés dans le tableau.
Ohhkay! Merci beaucoup! Utiliser quelque chose d'analogue au terminateur nul ferait l'affaire.
@CRag Pour presque tous les usages ( y compris les chaînes! principalement) c'est une mauvaise solution. Il est préférable de garder une trace de la longueur. C'est pourquoi pratiquement toutes les bibliothèques le gèrent comme ça, au lieu d'utiliser des valeurs sentinelles.
Vous avez déclaré le tableau comme:
int a[10];
Ainsi, le nombre d'éléments, tels que réservés en mémoire, est égal à 10 (que vous les remplissiez ou non).
Si vous souhaitez conserver le nombre d'éléments dans un tableau, je vous conseillerais de le remplir avec un nombre que vous n'utiliserez pas de toute façon (la plupart des gens choisissent -1 à cet effet) . Plus tard, vous remplissez le tableau comme vous le souhaitez.
Comme ça, quand vous voulez connaître le nombre d'éléments dans votre tableau, il vous suffit de parcourir votre tableau pour le premier -1 (au cas où il y en aurait), dont l'index vous fournira la longueur de le tableau.
" Ce code ci-dessus imprime 10, mais le nombre réel d'éléments présents est de 5. "
Non. -> int a [10]; -> a est un tableau de 10 éléments de type int . < / p>
Le fait de n'initialiser que les 5 premiers éléments de la boucle for n'affecte pas la taille du tableau a .
" Ce ne sera pas un problème si c'est un tableau de caractères, mais ici, le tableau d'entiers cause de la douleur. "
Cela ne peut pas être vrai si votre code testé n'est pas significativement différent. Peut-être en utilisant strlen au lieu de sizeof (a) / sizeof (char) .
a[i] =i;