Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Obtenir la valeur d'un pointeur (ou l'adresse d'un objet)

8 réponses
Avatar
PurL
Bonjour,

Comment otient-on lea valeur d'un pointeur ?
ex :

myObj = new CObject;
AfficherValeur ((long)Obj) ?

Merci,

PurL

8 réponses

Avatar
PurL
Vincent Richard wrote:

Comment otient-on lea valeur d'un pointeur ?


La valeur d'un pointeur est une adresse. Si tu parles de la *valeur
pointée* par un pointeur, il faut utiliser l'opérateur d'indirection
* ou -> :


Je parle d'adresse. Pour cout OK mais pour passer cette valeur à une
fonction ?
Quelle type pour le parametre ?

Merci,

PurL


Avatar
Vincent Richard

Je parle d'adresse. Pour cout OK mais pour passer cette valeur à une
fonction ?
Quelle type pour le parametre ?


Le même type que le pointeur lui-même : CObject*.

void AfficheValeur(CObject* obj)
{
std::cout << obj->valeur << std::endl;
}

CObject* myObj = new CObject; // myObj est un pointeur vers un CObject
AfficheValeur(myObj);

Tu peux aussi passer l'objet par référence (pour ne pas avoir à tester la
validité du pointeur dans AfficheValeur) :

void AfficheValeur(const CObject& obj)
{
std::cout << obj.valeur << std::endl;
}

CObject* myObj = new CObject;
AfficheValeur(*myObj);

Vincent

--
SL> Au fait elle est mieux ma signature maintenant ?
Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon.
-+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-

Avatar
Guillaume Brocker
PurL wrote:

Je parle d'adresse. Pour cout OK mais pour passer cette valeur à une
fonction ?
Quelle type pour le parametre ?


Si tu ne veux utiliser que la valeur numérique de l'adresse (pas d'accès
à l'objet pointé), tu peux toujours convertir le pointeur en entier et
le tour sera joué.

Avatar
PurL
Vincent Richard wrote:

Je parle d'adresse. Pour cout OK mais pour passer cette valeur à une
fonction ?
Quelle type pour le parametre ?


Le même type que le pointeur lui-même : CObject*.

void AfficheValeur(CObject* obj)
{
std::cout << obj->valeur << std::endl;
}

CObject* myObj = new CObject; // myObj est un pointeur vers un
CObject AfficheValeur(myObj);

Tu peux aussi passer l'objet par référence (pour ne pas avoir à
tester la validité du pointeur dans AfficheValeur) :

void AfficheValeur(const CObject& obj)
{
std::cout << obj.valeur << std::endl;
}

CObject* myObj = new CObject;
AfficheValeur(*myObj);

Vincent


Je ne veux pas utiliser de cout !
TextBox->Text = AffcheValeur(...)

PurL


Avatar
PurL
Guillaume Brocker wrote:
PurL wrote:

Je parle d'adresse. Pour cout OK mais pour passer cette valeur à une
fonction ?
Quelle type pour le parametre ?


Si tu ne veux utiliser que la valeur numérique de l'adresse (pas
d'accès à l'objet pointé), tu peux toujours convertir le pointeur en
entier et le tour sera joué.


Comment ?

PurL


Avatar
Fabien LE LEZ
On Tue, 19 Aug 2003 14:15:25 +0200, "PurL"
wrote:

Je ne veux pas utiliser de cout !
TextBox->Text = AffcheValeur(...)


En gros, tu veux envoyer la valeur dans une chaîne de caractères au
lieu de cout ? Dans ce cas, remplace "cout" par un ostringstream et le
tour est joué...


--
Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/
et http://www.aminautes.org/forums/serveurs/tablefr.html
Archives : http://groups.google.com/advanced_group_search
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html

Avatar
Christophe Lephay
"PurL" a écrit dans le message de
news:bht4c5$hle$
Guillaume Brocker wrote:
PurL wrote:

Je parle d'adresse. Pour cout OK mais pour passer cette valeur à une
fonction ?
Quelle type pour le parametre ?


Si tu ne veux utiliser que la valeur numérique de l'adresse (pas
d'accès à l'objet pointé), tu peux toujours convertir le pointeur en
entier et le tour sera joué.


Comment ?


Sans avoir à convertir, tu peux considérer un pointeur comme une variable.
Pour transmettre une variable d'un certain type à une fonction, il suffit
que le paramètre de la fonction soit du même type que celui de la variable.

Objet * un_pointeur; // type : pointeur sur Objet
...

void AfficherValeur( Objet * parametre ); // type : pointeur sur Objet

...

AfficherValeur( un_pointeur );


Par la suite, libre à toi dans AfficherValeur de manipuler la valeur du
pointeur avec parametre ou la valeur pointée avec *parametre...

Chris



Avatar
Guillaume Brocker
PurL wrote:

Si tu ne veux utiliser que la valeur numérique de l'adresse (pas
d'accès à l'objet pointé), tu peux toujours convertir le pointeur en
entier et le tour sera joué.



Comment ?


Tout simplement en faisant :

CObject* pObject = new CObject();
int objectAdress = (int) pObject;

Et ensuite, tu peux toujours déclarer une fonction qui affiche cette
valeur... :o)