retourner...

retourner... - C++ - Programmation

Marsh Posté le 22-07-2003 à 21:47:42    

j'ai une fonction qui contien une variable  
char x[10], je voudrais retourner sa valeur comment faire?


Message édité par nabrouska le 02-08-2003 à 19:36:01
Reply

Marsh Posté le 22-07-2003 à 21:47:42   

Reply

Marsh Posté le 22-07-2003 à 21:53:29    

1) allocation dynamique avec malloc et retourner un pointeur
2) encapsuler le tableau dans une structure et retourner une structure

Reply

Marsh Posté le 22-07-2003 à 22:25:20    

Code :
  1. //1
  2. string tafonction(tesarguments)
  3. {
  4. char x[10];
  5. string sx = x;
  6. return sx;
  7. }
  8. //c'est bon ca non ?
  9. //2
  10. char * tafonction(tesarguments)
  11. {
  12. char * x = new char[10];
  13. return *x;
  14. }
  15. //ca je suis pas sur ;)


---------------
Human Forever
Reply

Marsh Posté le 22-07-2003 à 22:29:07    

VisualC_n3T a écrit :

Code :
  1. //1
  2. string tafonction(tesarguments)
  3. {
  4. char x[10];
  5. string sx = x;
  6. return sx;
  7. }
  8. //c'est bon ca non ?
  9. //2
  10. char * tafonction(tesarguments)
  11. {
  12. char * x = new char[10];
  13. return *x;
  14. }
  15. //ca je suis pas sur ;)



tu te calmes avec ton code C++ et qui passe meme pas la vérification synthaxique?

Reply

Marsh Posté le 23-07-2003 à 05:52:27    

nabrouska a écrit :

j'ai une fonction qui contien une variable  
char x[10], je voudrais retourner sa valeur comment faire?


 
Faudrait deja voir pourquoi ce char[] se trouve uniquement dans un niveau inferieur alors que visiblement on en a besoin au-dessus.


---------------
You have the right to remain silent. You are warned that anything you say can will be taken down used as evidence against you///Il n'y a pas de théorie de l'évolution. Juste une liste d'espèces que Chuck Norris autorise à survivre.
Reply

Marsh Posté le 23-07-2003 à 07:27:13    

Angel_Dooglas a écrit :


 
Faudrait deja voir pourquoi ce char[] se trouve uniquement dans un niveau inferieur alors que visiblement on en a besoin au-dessus.


probablement pour la même raison qui fait qu'il ne sait pas comment la retourner... [:skeye]

Reply

Marsh Posté le 23-07-2003 à 15:18:22    

Ou alors il reste la version "porc feignant" : retourner un pointeur vers le tableau static local...
 
(pas taper !!)

Reply

Marsh Posté le 23-07-2003 à 17:11:04    

leneuf22 a écrit :

Ou alors il reste la version "porc feignant" : retourner un pointeur vers le tableau static local...
 
(pas taper !!)

ça n'a rien que mal en soit, mais les debutants ne mesurent pas tout ce que ça implique, don c'est un mauvais conseil pour eux

Reply

Marsh Posté le 23-07-2003 à 21:52:02    

nabrouska a écrit :

j'ai une fonction qui contien une variable  
char x[10], je voudrais retourner sa valeur comment faire?


 
le pb c est que comme ta variable a été déclarée dans la fonction (si c est le cas) , celle-ci n existe qu a l interieur de ta fonction et a la sortie de ta fonction, elle n existe plus. Donc pour retourner la valeur, tu es obligé de "dupliquer" dynamiquement ta variable (ton tableau je devrai dire) ce qui n est pas forcement  top.
 
Il serait mieux comme l a proposé je sais plus qui(desolé j ai la flemme de remonter :D ) au dessus, de declarer ton tableau en dehors de ta fonction - soit statiquement, soit dynamiquement- puis de t en servir dans la fonction ou mieux, de le passer en parametre de ta fonction.
 
 
 
 
 
 

Reply

Marsh Posté le 23-07-2003 à 23:04:00    

:pfff:  
On va le dire plus clairement cette fois (vu que l'auteur du topic c'est evanoui dans la nature).
La manoeuvre qu'il veut effectuer ne va pas produire du code potable (dans la logique de construction et a la maintenance).
 
Alors:
1/Il n'a pas suffisament bien pense son programme et dans ce cas  vos conseils de syntaxe sont tres sympathiques et vont lui permettre de pondre du code imbitable.
2/Il a retourne le probleme dans tous les sens et il lui faut absolument proceder de cette maniere et dans ce cas il vaut mieux privilegier une declaration globale (de pointeur pour futur tableau/chaine en dynamique s'il le faut), ce qui va probablement obscurcir le code, mais vu que cette manoeuvre doit etre "exceptionnelle" ou en tout cas entourer de grosses precautions...


Message édité par Angel_Dooglas le 23-07-2003 à 23:04:07

---------------
You have the right to remain silent. You are warned that anything you say can will be taken down used as evidence against you///Il n'y a pas de théorie de l'évolution. Juste une liste d'espèces que Chuck Norris autorise à survivre.
Reply

Marsh Posté le 23-07-2003 à 23:04:00   

Reply

Marsh Posté le 24-07-2003 à 11:30:25    

++Taz a écrit :

ça n'a rien que mal en soit, mais les debutants ne mesurent pas tout ce que ça implique, don c'est un mauvais conseil pour eux


 
Oui, sauf dans des cas très rares ou utiliser cette méthode peut être recommandé si on écrit une librairie... je pense à la librairie standard du C avec ctime() par exemple, ce qui facilite le travail du codeur qui va utiliser la lib, et qui ne doit pas se soucier de son mécanisme interne.

Reply

Marsh Posté le 24-07-2003 à 15:21:19    

leneuf22 a écrit :


 
Oui, sauf dans des cas très rares ou utiliser cette méthode peut être recommandé si on écrit une librairie... je pense à la librairie standard du C avec ctime() par exemple, ce qui facilite le travail du codeur qui va utiliser la lib, et qui ne doit pas se soucier de son mécanisme interne.

ce n'est pas du tout rare, je me sert de ce genre de chose et renvoie des référecens/pointeurs à des variables statis de fonction dans de tres nombreux cas.

Reply

Marsh Posté le 02-08-2003 à 19:35:09    

VisualC_n3T a écrit :

Code :
  1. //2
  2. char * tafonction(tesarguments)
  3. {
  4. char * x = new char[10];
  5. return *x;
  6. }
  7. //ca je suis pas sur ;)




 
pourquoi * dans le return ?
x est un char*, donc return x


---------------
Envie de backuper un DVD en DivX mais vous y connaissez rien ? essayez dvd-ripp : le site de Maxime
Reply

Marsh Posté le 02-08-2003 à 20:03:27    

leneuf22 a écrit :

Ou alors il reste la version "porc feignant" : retourner un pointeur vers le tableau static local...
 
(pas taper !!)


 
 [:rofl2]  [:rofl2]  [:rofl2]

Reply

Marsh Posté le 03-08-2003 à 06:15:52    

nabrouska a écrit :

j'ai une fonction qui contien une variable  
char x[10], je voudrais retourner sa valeur comment faire?

Retourner le tableau et pas te faire chier avec les détail, le GC s'en occupe ... Ah on me dit dans mon oreillette que c'est du C ! Bon bah désolé alors, mais va falloir copier sur le tas et spéculer (bah oui, tu sais rarement avec certitude qui a pris une copie du pointeur) sur la date à laquelle tu peux désallouer sans risque.

Reply

Marsh Posté le 03-08-2003 à 09:12:09    

nraynaud a écrit :

Retourner le tableau et pas te faire chier avec les détail, le GC s'en occupe ... Ah on me dit dans mon oreillette que c'est du C ! Bon bah désolé alors, mais va falloir copier sur le tas et spéculer (bah oui, tu sais rarement avec certitude qui a pris une copie du pointeur) sur la date à laquelle tu peux désallouer sans risque.

tu reprends tes mauvaises habitudes je vois...

Reply

Sujets relatifs:

Leave a Replay

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