Sizeof() en c++

Résolu
mrd9991 Messages postés 179 Date d'inscription   Statut Membre Dernière intervention   -  
mrd9991 Messages postés 179 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention   7
 
salut, merci pour votre réponse, est ce que il ya une solution
0
mrd9991 Messages postés 179 Date d'inscription   Statut Membre Dernière intervention   7
 
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