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

  FORUM HardWare.fr
  Programmation

  [C++] Problème de pointeurs, d'allocation ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Problème de pointeurs, d'allocation ?

n°59114
robripper
Posté le 12-09-2001 à 09:46:16  profilanswer
 

Pourquoi var vaut toujours NULL après la fonction ???
 
Void main()
{

char *var=NULL;
fonction(var);
// ici var = NULL !!!

}
 
 
fonction (char *fvar)
{
fvar = new char[10];

// ici fvar = qqch
}

mood
Publicité
Posté le 12-09-2001 à 09:46:16  profilanswer
 

n°59121
la viper
Posté le 12-09-2001 à 10:08:22  profilanswer
 

en fait, ce qui doit se passer .. c'est que quand tu sors de ta fonction 'fonction', le pointeur var pointe tjrs sur son ancienne adresse.
 
donc il faut que tu l'obliges à pointer vers la nouvelle.
maintenant je suis pas sur .. il est tot la  :pt1cable: e
 
essaye:
 
void main(void)
{
char *var=NULL;
var = fonction();
...
}
 
char* fonction()
{
   char *ptr = new char[10];
   //blabla
   return ptr;
}
 
ou sinon il faut peut etre faire un pointeur de pointeur et tu n'auras plus le probleme.
 
void main(void)
{
char **var=NULL;
fonction(var);
....
 
fonction(char **var)
{
    *var = new char[10];
   // blabla
}
là l'adresse de base du double pointeur ne changera pas et donc sera connue n'importe où que ce soit dans le main ou dans fonction.. ce qui n'est pas le cas quand tu utilises juste un pointeur
 
 
maintenant je peux me tromper j'ai rien testé là .. et il est tot ;-)

n°59122
pymousses
Posté le 12-09-2001 à 10:09:10  profilanswer
 

robripper a écrit a écrit :

Pourquoi var vaut toujours NULL après la fonction ???
 
Void main()
{

char *var=NULL;
fonction(var);
// ici var = NULL !!!

}
 
 
fonction (char *fvar)
{
fvar = new char[10];

// ici fvar = qqch
}  




 
fonction(&var);
avec ca ca devrait marcher.


---------------
From Pymousses.
n°59213
koulip31
Posté le 12-09-2001 à 16:35:39  profilanswer
 

fonction(&var); doit marcher
 
pourkoi?
car fonction nutilise pas ce q'uon lui a donne en parametre mais une copie de celui ci donc normal que ca marche po :)
donc en fillant son adresse il vas utiliser la copie de son adresse donc nikel il manupuleras ton pointeur :)
 
 
 
void fonction(int a)
{a = 5;}
 
int main(int argc, char *argv[])
{int a;
 a = 10;
 fonction(a);
 printf("%d\n",a);}
 
taffiche 10 et non 5 pourtant le a envoille 'a' la fonction est le meme que celui recus donc il devrais changer en 5 ...  
mais comm il lui fournit une copie de 'a' et non 'a' .. 'a' est tjour = a 10 ... c'est la meme chose pour les pointeurs.
 
voila pour l'explication tj mieux savoir le pourquoi :)

n°59225
antp
Super Administrateur
Champion des excuses bidons
Posté le 12-09-2001 à 17:06:30  profilanswer
 

robripper: je me demande pq tu postes ça dans le forum, alors que 2 minutes plus tôt je t'envoyais la réponse par mail :D
pour ceux que ça intéresse, voici ma réponse (qui concorde avec la réponse de pymousses) :
 

Citation :


pcq tu passes la valeur et pas l'adresse:

Code :
  1. char *val=NULL;
  2. fonction (&var);
  3. et plus bas:
  4. fonction (char **fvar) {
  5. *fvar = new char[10];
  6. }


 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire

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

  [C++] Problème de pointeurs, d'allocation ?

 

Sujets relatifs
[PHP] Problème de passage de variablesg un problème [HTML+JAVA]
[MYSQL] Problème de tri ...probleme msgsrv32.exe
big probleme de securiteprobleme d actualisation
probleme php-mysql retour a la ligne , tableau et saisi de texte[PHP]Gros problême avec les include
[Javascript] Probleme de condition[PHP]Gros problême avec les include
Plus de sujets relatifs à : [C++] Problème de pointeurs, d'allocation ?


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