Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2986 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  pb de poinreur lors d'appel de fonctions

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pb de poinreur lors d'appel de fonctions

n°247438
blackgodde​ss
vive le troll !
Posté le 18-11-2002 à 10:27:07  profilanswer
 

bonjour,
 
je dois passer un pointeur (char* MyChar) à une fonction pour qu'elle alloue la chaine de caractère. a l'origine, MyChar = NULL
ensuite, ds la fonction, MyChar = new char[Size], puis ca la remplit. Mais lorsrque la fonction retourne, MyChar == NULL toujours. Comment faire alors ?


---------------
-( BlackGoddess )-
mood
Publicité
Posté le 18-11-2002 à 10:27:07  profilanswer
 

n°247458
BifaceMcLe​OD
The HighGlandeur
Posté le 18-11-2002 à 10:53:25  profilanswer
 

Les paramètres, en C, sont toujours passés par valeur, jamais par référence. La seule manière de modifier leur valeur est de passer un pointeur sur la valeur à modifier.
 
Dans ton cas, si tu veux modifier un char* , il faut passer un char** en paramètre.
 
Note : Si tu es en C++, tu peux utiliser les références au lieu des pointeurs : char*& .

n°247459
barbarella
Posté le 18-11-2002 à 10:56:44  profilanswer
 

blackgoddess a écrit a écrit :

bonjour,
 
je dois passer un pointeur (char* MyChar) à une fonction pour qu'elle alloue la chaine de caractère. a l'origine, MyChar = NULL
ensuite, ds la fonction, MyChar = new char[Size], puis ca la remplit. Mais lorsrque la fonction retourne, MyChar == NULL toujours. Comment faire alors ?




 
lorsqu'il ne s'agit que d'une chaine tu as la sol suivante.
 
char *toto(char *chp)
{
 ...
 modif de chp
 ...
 
 return(chp);
}
 
 
chp = toto(chp);
 
 
Solution plutot utilisable en C, en C++ la remarque de bifacemcleod me semble plus judicieuse.


Message édité par barbarella le 18-11-2002 à 11:00:12
n°247555
blackgodde​ss
vive le troll !
Posté le 18-11-2002 à 12:41:36  profilanswer
 

vs pouvez m'en dire un peux plus sur char*& ?
 
(je suis en cpp, mais ma fonction retourne déjà une valeur)


---------------
-( BlackGoddess )-
n°247589
BifaceMcLe​OD
The HighGlandeur
Posté le 18-11-2002 à 13:39:59  profilanswer
 

Pour simplifier, une référence est un pointeur implicitement déréférencé, c'est-à-dire sur lequel l'opérateur "*" (dit de "déréférencement" ) est déjà appliqué.
Ecrire :

Code :
  1. void toto(char*& chp, int size)
  2. {
  3.   chp = new char[size];
  4. }


revient à écrire :

Code :
  1. void toto(char** chp, int size)
  2. {
  3.   *chp = new char[size];
  4. }

n°247630
blackgodde​ss
vive le troll !
Posté le 18-11-2002 à 14:54:31  profilanswer
 

d'accord ... c encore un peu flou ... mais ca va venir :) mais dans les 2 cas on doit passer un char** à la fonction toto c bien ca ?


---------------
-( BlackGoddess )-
n°247631
blackgodde​ss
vive le troll !
Posté le 18-11-2002 à 14:55:21  profilanswer
 

je peux par exemple faire
 
char* MyChar = NULL;
 
toto(&MyChar);
 
est-ce exact ?


---------------
-( BlackGoddess )-
n°247633
blackgodde​ss
vive le troll !
Posté le 18-11-2002 à 14:55:45  profilanswer
 

(le int est un peu passé à la trappe, mais bon c pas l'interressant)


---------------
-( BlackGoddess )-
n°247645
charlene
Verba volant, scripta manent
Posté le 18-11-2002 à 15:03:22  profilanswer
 

BlackGoddess a écrit a écrit :

je peux par exemple faire
 
char* MyChar = NULL;
 
toto(&MyChar);
 
est-ce exact ?



si toto prend un char** , OUI

n°247764
BifaceMcLe​OD
The HighGlandeur
Posté le 18-11-2002 à 16:34:06  profilanswer
 

Mais si toto attend un char*&, non. Il faut alors écrire "toto(MyChar);".


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  pb de poinreur lors d'appel de fonctions

 

Sujets relatifs
fonctions graphiques en CDeclarations de fonctions et temps d'executions du script...
Où sont les fonctions trigo ? [résolu]Pointeurs sur fonctions (question pointue !)
structure d'une base de donnés sql pour un forum et fonctions innovant[C] Help !! pb avec fonctions
[PHP] Probleme avec les fonctionsvisual c++ : comment faire appel à un fichier .h ?
Objets, Classes, Fonctions avec objets en paramétres, *, & :Prob.création d'une DLL avec import des fonctions d'une autre DLL
Plus de sujets relatifs à : pb de poinreur lors d'appel de fonctions


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR