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

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

Marsh Posté le 12-09-2001 à 09:46:16    

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
}

Reply

Marsh Posté le 12-09-2001 à 09:46:16   

Reply

Marsh Posté le 12-09-2001 à 10:08:22    

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 ;-)

Reply

Marsh Posté le 12-09-2001 à 10:09:10    

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.
Reply

Marsh Posté le 12-09-2001 à 16:35:39    

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 :)

Reply

Marsh Posté le 12-09-2001 à 17:06:30    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed