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

[Résolu]
Signaler
Messages postés
14
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
14 février 2006
-
Messages postés
14
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
14 février 2006
-
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

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
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
Messages postés
14
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
14 février 2006

Je comprends maintenant d'où vient mon erreur.

Merci beaucoup ton aide.

Au plaisir,