Sizeof() en c++

Résolu/Fermé
mrd9991 Messages postés 179 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 11 janvier 2013 - 9 août 2009 à 21:12
mrd9991 Messages postés 179 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 11 janvier 2013 - 9 août 2009 à 22:06
Bonjour,je suis en train de programmer en c++ avec dev-cpp, mais j'ai rencontrer un problème lorsque j'ai utilisé l'instruction sizeof() à l'interieur d'une fonction pour sovoir les nombres d'octets prises par le tableau, voila un exemple:
void octet(double t[],taille)
{
cout<<sizeof(t);
}
avec:
const taille=7;
double a[taille] = {1,2.5,3,4,5,6,7}
octet(a,taille); //appelle de la fonction octet

le problème c'est que le resultat est toujours: 4, alors qu'il devrait ètre : 7*8=56

si vous pouvez m'aider.
merci d'avance

4 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
9 août 2009 à 21:14
Salut,
Normal, on ne peut pas passer de tableau en C/C++. De cette façon, tu ne passes qu'un pointeur sur le premier élément. Et de ce fait, tu obtiens la taille d'un pointeur. Soit 4 dans ton cas.
2
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
9 août 2009 à 21:40
Non, car c'est le fonctionnement interne du C/C++ qui stipule que tu envoies un pointeur.
C'est pour ça qu'il faut toujours passer la taille du tableau en arguments.
Tu fais cout << taille; et tu auras la taille voulue.
Et lorsque tu appelles ta fonction : octet(t,sizeof t); ici sizeof t, vaudra la taille du tableau.
1
mrd9991 Messages postés 179 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 11 janvier 2013 7
9 août 2009 à 21:35
salut, merci pour votre réponse, est ce que il ya une solution
0
mrd9991 Messages postés 179 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 11 janvier 2013 7
9 août 2009 à 22:06
salut ,merci pour la solution, elle bien marchée avec ce que je voulai faire(correger les erreur des bornes des indices des tableau), il a fallu que j'ajoute un argument en plus pour sizeof(t) par ce que j'avais besoin aussi de l'argument taille mais c'est pas grave, l'importance c'est que ça a marchée, merci beaucoup encore une fois ,au revoir.
0