Petit problème avec un pointeur et un simple appel de fonction...

Résolu
n_o_u_n_o_u Messages postés 14 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 14 février 2006 - 31 déc. 2005 à 00:21
n_o_u_n_o_u Messages postés 14 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 14 février 2006 - 31 déc. 2005 à 00:47
Bonjour,

Je suis actuellement en train de découvrir la notion de pointeurs et je rencontre un petit problème avec le code ci-dessous.
L'adresse du tableau "tableau" et du pointeur "pvaleur" sont identiques, tous les deux sont déclarés en double et
pourtant les informations renvoyées par sizeof sont différentes ?! Aurais-je oublié quelque chose ?

Auriez vous une explication s'il vous plait ?

Merci d'avance !

//Début du code :
///////////////////////////////////////
#include
using namespace std;
double lecturepointeur (double *pvaleur);
int main (void)
{

double tableau[]={10.0,5.0,15.0};

cout << "adresse tableau=" << hex << &tableau << endl;
cout << dec << sizeof(tableau) << endl;
cout << dec << sizeof(tableau[0]) << endl;

double nb=(sizeof tableau) / (sizeof tableau[0]);
cout << "nb avant =" << dec << nb << endl;


cout << "resultat de fonction:" << endl << lecturepointeur(tableau) << endl ;


return 0;
}


double lecturepointeur (double *pvaleur)
{
cout << "adresse recue dans fonction : " << hex << pvaleur << endl;

cout << pvaleur[0] << endl;

cout << dec << sizeof(pvaleur) << endl;
cout << dec << sizeof(pvaleur[0]) << endl;


double nb=(sizeof pvaleur) / (sizeof pvaleur[0]);
cout << "nb=" << dec << nb << endl;


return nb;
}
///////////////////////////////////////
//Fin du code.

2 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
31 déc. 2005 à 00:37
dans la fonction lecturepointeur, on ne sait pas si pvaleur est un tableau ou un pointeur vers une zone allouée dans le tas. sizeof te donnera donc toujours 4 ici (pour un systeme 32 bits)
Ca peut parraitre étonnant la première fois, mais ce comportement est bien normal
3
n_o_u_n_o_u Messages postés 14 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 14 février 2006
31 déc. 2005 à 00:47
Je comprends maintenant d'où vient mon erreur.

Merci beaucoup ton aide.

Au plaisir,
0
Rejoignez-nous