[c/c++]taille tableau entier
Résolu/Fermé
Utilisateur anonyme
-
12 févr. 2010 à 16:53
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 24 févr. 2010 à 20:53
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 24 févr. 2010 à 20:53
A voir également:
- Longueur tableau c
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Trier tableau excel - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
12 févr. 2010 à 17:11
12 févr. 2010 à 17:11
Bonjour,
Ce n'est pas la bonne explication.
Même en envoyant un tableau, ou un pointeur pointant sur une zone allouée tu obtiendras (souvent) 1.
La raison est simple : en C/C++, il n'est pas possible d'envoyer de tableau en argument. Le C/C++ transformera le tableau en adresse sur le premier élément du tableau. Ainsi même si tu envoies un tableau en argument, le sizeof vaudra sizeof(char*) (qui vaut 4 sur une architecture 32 bits). Dès lors, puisque ton sizeof(int) vaut 4 sur ta machine, tu obtiens 1.
Cette fois, c'est résolu ;-))).
Ce n'est pas la bonne explication.
Même en envoyant un tableau, ou un pointeur pointant sur une zone allouée tu obtiendras (souvent) 1.
La raison est simple : en C/C++, il n'est pas possible d'envoyer de tableau en argument. Le C/C++ transformera le tableau en adresse sur le premier élément du tableau. Ainsi même si tu envoies un tableau en argument, le sizeof vaudra sizeof(char*) (qui vaut 4 sur une architecture 32 bits). Dès lors, puisque ton sizeof(int) vaut 4 sur ta machine, tu obtiens 1.
Cette fois, c'est résolu ;-))).
Utilisateur anonyme
12 févr. 2010 à 16:57
12 févr. 2010 à 16:57
en fait il faut obligatoirement qu'un allocation mémoire soit fait quelque part. résolu
22 févr. 2010 à 12:15
le seul moyen est d'ajouter un paramètre à la méthode qui lui contient la taille. Le seul tableau avec lequel ca marche est la liste chainée (ou char*) qui lui, grâce à :
ou ce code :
enfin voila ^^ le seul moyen est soit de créer un type tableau d'entier avec un caracrère de fin, soit passer la taille en paramètre.
bisou à tous
22 févr. 2010 à 18:43
24 févr. 2010 à 09:44
24 févr. 2010 à 20:53
Par exemple, void fonction( int *tab, size_t taille);
Et quand tu appelles la fonction : fonction(tab, sizeof taille/sizeof *taille);
Cdlt,