la fonction show n'affiche que la première case du tableau, pourtant l'expression 2 affiche la taille convenable du tableau arr : 5 . Quelqu’un a-t-il une explication ? Merci.
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 2 sept. 2010 à 13:13
Salut,
En C/C++, un tableau ne contient que ses données. Il ne contient pas d'information sur lui même tel que sa taille, comme c'est le cas en java, vb, delphi...
Tout ce que reçoit show en paramètre, c'est un pointeur où est supposé se trouver une certaine quantité d'entiers. Il ne peut pas savoir combien.
C'est peut être un peu plus clair sur cette exemple de cette page :
int days[] = {1,2,3,4,5};
int *ptr = days;
printf("%u\n", sizeof(days));
printf("%u\n", sizeof(ptr));
Dans le cas de ptr, sizeof renvoie la taille de ptr, c'est à dire un pointeur, donc 4 octets dans un prog 32 bits (Ce qui est la taille d'un int dans ton code -> 4 / 4 -> 1).
Pour ton code, tu peux par exemple réserver la première case du tableau pour contenir la taille, ou l'ajouter en argument à ta fonction show.