begin process at 2012 05 29 14:57:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Passage de paramètre (par référence / par valeur)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Passage de paramètre (par référence / par valeur)

lundi 13 septembre 2004 à 12:30:16 | Passage de paramètre (par référence / par valeur)

thiosyiasar

Salut,

Je début en cpp (je viens de vb et java) donc tout à apprendre des pointeurs.

Bref

j'ai le code suivant

unsigned char *pBuffer = NULL;
getBuffer(pBuffer); // La fonction alloue la mémoire : void getBuffer(unsigned char *pBuffer)

//<Ici je récupère bien le contenu du buffer et le pointeur pointe sur le premier char du buffer>

donc je prend ma méthode getBuffer() et je me la met dans une classe.

MaClasse *o = new MaClasse()
unsigned char *pBuffer = NULL;
o->getBuffer(pBuffer);

-->
Si la méthode getBuffer() garde la même signature, le buffer est bien créé en interne mais sortie de la méthode, pBuffer pointe sur NULL!
Par contre si la méthode est la suivante : void getBuffer(unsigned char *&pBuffer), ca marche ????

QUe signifie *& ???
Pourquoi ça marche si la fonction est dans le même fichier source et pas dans la classe ?

Merci
lundi 13 septembre 2004 à 12:34:35 | Re : Passage de paramètre (par référence / par valeur)

D1m3x

getBuffer(pBuffer); va utilise une copie de pBuffer et allouer de la mémoire pour celle-ci...

Soit tu fais:

getBuffer( unsigned char **ppBuffer ); et tu alloue la mémoire pour *ppBuffer ! Ou bien tu utilise les références du C++:

getBuffer( unsigned char &rBuffer )

Ensuite il te suffit d'allouer la mémoire pour rBuffer, les références sont disponible depuis C++ et donc pas en C ;)

je pense que c'est tout :)

ciao :)


:.: [DmXx] [#eX-Concept @ QNet] :.:
lundi 13 septembre 2004 à 12:57:55 | Re : Passage de paramètre (par référence / par valeur)

thiosyiasar

Merci

Réponse rapide (5mn) et efficace !!

Je comprend mieux maintenant les paramêtres du genre **ppObject qu' utilise certaine fonction pour retourner une instance qu'elle crait.

La compatiblité vers C est elle la seule raison pour le choix d'une des deux méthodes ?




Nico
lundi 13 septembre 2004 à 13:11:29 | Re : Passage de paramètre (par référence / par valeur)

D1m3x

Réponse acceptée !
Euh oui on peut le voir comme ça :)

Je ne connais pas vraiment les grosse différence entre ces deux méthode seulement je pense qu'en C++ il est mieux d'utiliser les références, pourtant l'opérateur * permettant le déréfenrecement d'un pointeur est également disponible en C++ donc je ne sais pas trop quoi te conseiller....

Mais les deux méthodes marche :)

ciao ;)

:.: [DmXx] [#eX-Concept @ QNet] :.:
lundi 13 septembre 2004 à 20:18:44 | Re : Passage de paramètre (par référence / par valeur)

djl

c'est tellment mieux le passage par reference en c++, rien que pour l'abstraction qu'on n'a pas avec le passage par pointeur, le passage de tableau par reference...


Cette discussion est classée dans : char, méthode, unsigned, pbuffer, getbuffer


Répondre à ce message

Sujets en rapport avec ce message

pb avec conio je cher cherche l'erreur( j'ai merde sur le mess precedent) [ par kin ] portpia.cpp#include"PortPiaPc.h"void main(){ PortPiaPc inst; inst(0x320,0x0f);}PortPiaPc.cpp#include "PortPiaPc.h"#include "conio.h"PortPiaPc::PortPia Pointeurs sur des tableaux de plusieurs dimensions [ par ProGamer ] J'ai besoin de faire des pointeurs sur ce genre de tableaux. Voici comment je m'y prends (et surtout, voici comment ça ne marche pas...):unsigned char char[] [ par coockiesch ] Hello tous!En fonction d'un mot que j'ai dans un tableau de char, mon prog doit effectuer un action... J'ai essayé la méthode ci-dessous mais dès lett pb avec variable [ par jeffise57 ] Please aidez moiJe reçoit comme arugument du fonction des variables unsigned char* et je doit passer dans une deuxième fonction les même arguments mai Sniffing - raw socket [ par krum ] J'ai essayé de coder un programme capable de me donner la description de l'en tete IP et TCP des packets que je reçois d'une certaine IP,mais lorsque Comment concertir Ansistring en unsigned char*????? [ par asik38 ] Ansistring x;unsigned char str[100];str[100]=x;??????Merci!!! struct [ par ready4 ] Je ne sais pas comment initialiser mes moteurs //intialisation moteursM1 = {2, 1, 1, 2, 0, 0, 120};M2 = {8, 4, 4, 8, 0, 0, 80};M3 = {32, 16, 16, 32, 0 Conversion de unsigned char en float (17.6E) [ par lemenager ] Bonjour,Je dois lire un fichier binaire dans lequel il y a des float en format (17.6E). J'ai l'impression que je suis oblige de les lires en unsigned transformer un tableau 2d en image bitmap [ par gyzmo1 ] Bonjour a tous, voilà mon problème, je suis en train de mettre en place une méthode de comparaison de signature manuscrites. Cette méthode s applique convertion d'une class perso en unsigned char [ par waza ] Salut moi j'ai un probléme de converstion dune classe perso en unsigned char. vc++ me met :"cannot convert from 'class perso' to 'unsigned char'No use


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales