Problème de pointeurs, d'allocation ? [C++] - Programmation
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 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 ;-)
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.
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
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
pour ceux que ça intéresse, voici ma réponse (qui concorde avec la réponse de pymousses) :
Citation :
|
[edtdd]--Message édité par antp--[/edtdd]
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
}