[Cpp] Donner une variable en argument dans une fonction

Donner une variable en argument dans une fonction [Cpp] - C++ - Programmation

Marsh Posté le 12-08-2004 à 12:42:25    

Je voudrais faire une fonction qui demande en argument, une variable.
 
int a;
bool b;
printf("a avant %d\n", a);
b = maFonction(a);
if( b ) printf("a après %d\n", a);
 
La fonction modifierai donc la variable a. Un exemple ce serait bien ^^ Merci.

Reply

Marsh Posté le 12-08-2004 à 12:42:25   

Reply

Marsh Posté le 12-08-2004 à 12:48:09    

:heink:  
c'est la base de la base du C ca, hein [:itm]  

Code :
  1. bool fct(int & a)
  2. {
  3.     // Opérations sur a
  4.     if(condition) // Si ca a marché
  5.         return true;
  6.     else // Si ca a pas marché
  7.         return false;
  8. }


Message édité par masklinn le 12-08-2004 à 12:48:42

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 12-08-2004 à 13:03:10    

Et si on veut que cette argument soit optionnel ?

Reply

Marsh Posté le 12-08-2004 à 13:08:30    

Surdéfinition de fonctions

Code :
  1. bool fct(void)// Si pas d'argument fourni (appel fct()) le programme utilise ca
  2.   {  return false; }// la tu mets les trucs a faire
  3.   bool fct(int &a)// Si int fourni en argument, il utilise ca
  4.   {
  5.       // Opérations sur a
  6.         if(condition) // Si ca a marché
  7.               return true;
  8.         else // Si ca a pas marché
  9.               return false;
  10.   }


Message édité par masklinn le 12-08-2004 à 13:08:56

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 12-08-2004 à 13:12:14    

ah ouais ^^
 
Merci beaucoup ! :)
 
Pour le faite que je ne sache pas ça, je n'ai pas eu de formation en Cpp ni de tutorial en faite... c'est venu tout seul alors il arrive que je sache tout comme je peux ne rien savoir. :D

Reply

Marsh Posté le 12-08-2004 à 13:13:25    

NiLux a écrit :

c'est venu tout seul

J'en connais un qui va hurler...

Reply

Marsh Posté le 12-08-2004 à 13:18:05    

Pour un argument optionnel pas besoin de faire de la surdéfinition de fonction tout de même ...

Reply

Marsh Posté le 12-08-2004 à 13:18:27    

Pourquoi donc ?

Reply

Marsh Posté le 12-08-2004 à 13:19:42    

bah tu mets une valeur par défaut dans la déclaration, comme ça il est optionnel.

Reply

Marsh Posté le 12-08-2004 à 13:19:52    

On sait pas faire un truc du genre, dans le header :
 
bool maFonction(int & a = NULL);
 
Ce serait encore plus simple ça.

Reply

Marsh Posté le 12-08-2004 à 13:19:52   

Reply

Marsh Posté le 12-08-2004 à 13:23:44    

c'est exactement ce que je viens de te dire ;)

Reply

Marsh Posté le 12-08-2004 à 13:25:15    

Sauf que ça marche pas ^^ 0 est un int et on demande un &int

Reply

Marsh Posté le 12-08-2004 à 13:27:06    

Ah ben si tu mets une référence ( & ) tu peux pas lui passer de constantes en parametres. Enleve la référence, tu verras ca marche.  
Sauf que si tu veux modifier la variable passée en parametre, tu as besoin de cette référence, mais dans ce cas, passer zero en parametre n'a pas de sens.


Message édité par Ace17 le 12-08-2004 à 13:28:28
Reply

Marsh Posté le 12-08-2004 à 13:31:00    

NiLux a écrit :

ah ouais ^^
 
Merci beaucoup ! :)
 
Pour le faite que je ne sache pas ça, je n'ai pas eu de formation en Cpp ni de tutorial en faite... c'est venu tout seul alors il arrive que je sache tout comme je peux ne rien savoir. :D


 :pfff:  
en être à ne pas savoir faire une fonction j'appelle pas ca "venu tout seul" :sweat:  

cricri_ a écrit :

bah tu mets une valeur par défaut dans la déclaration, comme ça il est optionnel.


Toi tu acceptes peut être, mais après avoir testé la solution gcc n'aime pas du tout les passages par références avec paramètre par défaut (ce qui est normal je trouve :))
 
grillaid par Ace :cry:


Message édité par masklinn le 12-08-2004 à 13:31:36

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 12-08-2004 à 13:31:25    

Et en mettant la refèrence constante ça doit marcher je pense

Reply

Marsh Posté le 12-08-2004 à 13:33:10    

vachement utile si on veut modifier la valeur au sein de la fonction, le const [:itm]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 12-08-2004 à 13:34:04    

C'est vrai que ça n'est pas très propre de d'avoir une réfèrence optionnel ...

Reply

Marsh Posté le 12-08-2004 à 13:35:35    

Sur un autre forum on m'a proposé une autre méthode qui fonctionne tout aussi bien :
 
bool maFonction(int *a)
{
    *a=54;
    return true;
}
 
Autre part:
int z;
bool b;
b=maFonction(&z);
 

Reply

Marsh Posté le 12-08-2004 à 13:38:48    

Merci mais je sais faire une fonction, même une procédure regarde :
 
void maProcedure()
{
    printf("La belle procedure\n" );
}
 
Autre part :
maProcedure();
 
Le truc de passer une variable ou un pointeur en paramètre est une particularité du C que je ne connaissais pas. J'appel pas ça une "base".

Reply

Marsh Posté le 12-08-2004 à 13:41:16    

1- ce que tu appelles une procédure c'est juste une fonction appelée procédure -_-
2- les pointeurs, c'est du C, t'as posté sur le forum C++ autant utiliser les références quand les pointeurs ne sont pas nécessaires


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 12-08-2004 à 13:56:29    

1- je déteste quand on numérote, ça me donne l'impression de passer pour un con
2- une procédure c'est une fonction qui ne renvoie pas de résultat ou une fonction c'est une procédure qui renvoie un résultat
3- les pointeurs c'est du C, merci ^^
 
Enfin merci pour votre aide même si je vous trouve pas très agréable, vous devriez être plus gentil avec les noobs qui demande une petite aide ;)
(si ça vous fait chier répondez pas quoi)

Reply

Marsh Posté le 12-08-2004 à 13:59:06    

la notion de procédure n'existe pas en C, là tu parles Pascal ;)

Reply

Marsh Posté le 12-08-2004 à 14:06:32    

(C'est franchement peu important, enfin merci pour l'info quand même : )

Reply

Marsh Posté le 12-08-2004 à 14:46:31    

NiLux a écrit :

1- je déteste quand on numérote, ça me donne l'impression de passer pour un con
2- une procédure c'est une fonction qui ne renvoie pas de résultat ou une fonction c'est une procédure qui renvoie un résultat
3- les pointeurs c'est du C, merci ^^
 
Enfin merci pour votre aide même si je vous trouve pas très agréable, vous devriez être plus gentil avec les noobs qui demande une petite aide ;)
(si ça vous fait chier répondez pas quoi)


1- désolé, je suis très mauvais réthoricien donc j'utilise la numérotation pour structurer mes posts et éviter de me perdre moi même dans mon bordel
2- en C/C++ c'est kif kif, la notion de procédure n'existe pas en tant que tel
3- précisons que les pointeurs existent aussi en C++, mais que les références (entre autres) permettent de s'en passer dans bien des cas :)  
4- Si ca nous avait fait chier de répondre nous n'aurions pas répondu
5- Si tu ne nous trouve pas très agréable, files des offrandes à la vierge pour le fait que Taz ne soit pas passé te dire bonjours sur ce thread [:aloy]  

NiLux a écrit :

(C'est franchement peu important, enfin merci pour l'info quand même : )


c'est important pour faire comprendre aux gens de quoi tu parles, si tu parles de procédure (avec procédure == fonction sans retour) à un codeux non pascal il risque de ne pas comprendre ou de mal interpréter


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 12-08-2004 à 23:18:22    

NiLux a écrit :


Le truc de passer une variable ou un pointeur en paramètre est une particularité du C que je ne connaissais pas. J'appel pas ça une "base".


 
Si tu deviens a l'aise en C/C++ par la suite, tu verras a quel point "Le truc de passer une variable ou un pointeur en paramètre" est banal et n'a rien d'une particularité. Si, ca fait partie des bases.
 
Et j'ajoute que les pointeurs n'ont pas disparu en C++, loin de la, mais dans le cas particulier cité plus haut, on peut élégament les remplacer par des références.
 
Ensuite, tu dis que tu trouves notre aide pas tres agréable, apres relecture du topic le seul truc susceptible de t'avoir dérangé est :
"en être à ne pas savoir faire une fonction j'appelle pas ca 'venu tout seul' " avec les smileys méprisants.
 
Sache qu'ici beaucoup de gens on un niveau tres élevé, et il y a deux types de gars qu'on ne supporte pas : ceux qui ont une haute estime de leur niveau alors qu'ils sont au ras des paquerettes, et ceux qui font de l'auto-dérision sur leur niveau minable.
Tu t'annonces comme noob, c'est tres bien, mais c'est ta phrase sur "c'est venu tout seul" qui a dérangé pas mal d'entre nous, te placant dans la premiere catégorie de gars insupportables.
 
Tout ceux qui ont un niveau raisonnable en C++ ne l'ont pas appris en un jour, alors forcément quelqu'un qui s'amene en prétendant avoir acquis la connaissance de ce langage par l'opération du saint-esprit, ca enerve.
 
Je ne suis pas du tout en train de me moquer de toi, ni de m'énerver (j'espere d'ailleurs ne pas etre trop désagréable a lire :) ). Je veux juste te faire comprendre l'erreur stratégique qui t'a sur le moment foutu le forum a dos.
 
As tu finalement résolu ton probleme de référence?
 

Reply

Marsh Posté le 13-08-2004 à 10:03:56    

Ace17 a écrit :


"en être à ne pas savoir faire une fonction j'appelle pas ca 'venu tout seul' " avec les smileys méprisants.


Il n'y avait pas de smiley méprisants, le smiley méprisant c'est [:itm]  
 
j'ai utilisé :pfff: et :sweat: , des smileys de doute :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 13-08-2004 à 10:31:55    

:pfff: pas méprisant? Ca s'appelle ": pfff :" pourtant!

Reply

Marsh Posté le 13-08-2004 à 10:33:43    

ta gueule :o

Reply

Marsh Posté le 13-08-2004 à 11:00:41    

Ace17 a écrit :

:pfff: pas méprisant? Ca s'appelle ": pfff :" pourtant!


oui mais spa méprisant, ca montre que ca fait un peu suer de lire des trucs pareils, si tu voulais un exemple de méprisant fallait prendre

Citation :

c'est la base de la base du C ca, hein [:itm]


la l'exemple est valide


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 13-08-2004 à 11:02:04    

Ok, j'ai compris l'idée  :D

Reply

Marsh Posté le 13-08-2004 à 13:18:46    

Je ne suis pas si insupportable que ça, c'est dérangeant à ce point que j'ai apris le C sans manuel ? Comme on peut apprendre presque n'importe quel langage avec un exemple, le reste c'est de la documentation qu'on a besoin, pas d'un tutorial. (ouep enfin y'a des exceptions... le Perl il faut quand même une doc assez complète parce que $a=~s/\n/ /g; il faut y aller pour deviner que ça remplacer tous les retours à la ligne par des espaces lol)
 
Et puis c'est pas si troublant qu'il soit possible d'apprendre le C sans manuel. Exemple, le PHP c'est ultra-simple. Une source et c'est partis. L'éditeur de module de Neverwinter Nights. On peut apprendre les bases du C très facilement un peu partout.
 
Mais passer une variable en argument... c'est pas très fréquent. Et le pointeur c'est spécifique au C.
 
bah je trouve pas que je suis si insupportable que ça ^^
 
(et pis y'a d'autres langages faciles à apprendre : le Python. Avec Karamba, on télécharge un thème qui possède un script et c'est partis on connait comment ça marche. Le tout c'est de savoir déjà programmer sur un autre langage. Le premier c'est le plus dur c'est logique.)
 

Reply

Marsh Posté le 13-08-2004 à 13:35:10    

NiLux a écrit :

Et puis c'est pas si troublant qu'il soit possible d'apprendre le C sans manuel.


 
apprendre à faire quoi? un programme qui calcul ta moyenne au bac ?
 

NiLux a écrit :


Mais passer une variable en argument... c'est pas très fréquent. Et le pointeur c'est spécifique au C.


 
c'est tres frequents en c, mais de quoi tu parle ? ya que ca...

Reply

Marsh Posté le 13-08-2004 à 13:37:44    

Ça dépend ce que tu fait, c'est clair que si tu fait un programme en C ouais. Mais si tu fait un script à Neverwinter Nights c'est déjà bien rare quand tu fait une simple fonction (bien que tu utilises ceux de NWN) et en PHP passer une variable en argument j'ai jamais vu :S

Reply

Marsh Posté le 13-08-2004 à 13:45:14    

passer une variable en agurment, c'est dans tous les langages (je  suppose que tu veux dire autres  choses)
 
il me semble qu'en php on peut passer des objets par references, je suis pas sur
 
ce que je veux dire, c'est qu'il suffit pas d'avoir les bases en algo et d'avoir vu 2-3 sources en c pour connaitre le c

Reply

Marsh Posté le 13-08-2004 à 13:54:15    

je prétend pas tout savoir, c'est pour ça que quand je sais pas, je demande. Mais on me reproche ici de prétendre avoir appris sans tutorial : ben ouais j'ai appris sans tutorial. J'ai pas *tout* appris mais j'ai appris les équivalents par rapport aux langages dont j'étais habitué. Et comme on passait rarement des variables en arguments, ici, en C, ça m'arrive rarement de passer une variable en argument.
 
y cherche la petite bête les gens ici ^^ Prise de tête inutile, la prochaine fois je répondrai le strictement minimum ainsi ça m'évitera une bête discussion inutile.

Reply

Marsh Posté le 13-08-2004 à 13:59:55    

NiLux a écrit :


Et puis c'est pas si troublant qu'il soit possible d'apprendre le C sans manuel. Exemple, le PHP c'est ultra-simple. Une source et c'est partis. L'éditeur de module de Neverwinter Nights. On peut apprendre les bases du C très facilement un peu partout.


pour le PHP c'est un langage simple, haut niveau et interprété, et de plus tu ne connaitrais jamais toutes les spécificités du PHP en te basant sur 2 scripts :)  

Citation :

Mais passer une variable en argument... c'est pas très fréquent.


si quand même, j'ai pas arrêté de le faire dans tous les langages que j'ai pu utiliser (C C++ Java Python PHP principalement)

Citation :

Et le pointeur c'est spécifique au C.


Pas exactement, disons plutot que le C/C++ est l'un des rares langages dans lesquelles ont manipule directement le pointeur

Citation :

(et pis y'a d'autres langages faciles à apprendre : le Python. Avec Karamba, on télécharge un thème qui possède un script et c'est partis on connait comment ça marche. Le tout c'est de savoir déjà programmer sur un autre langage. Le premier c'est le plus dur c'est logique.)


mais n'importe quoi :sweat:  
le python a beau être facile d'approche on ne l'apprend pas "comme ca", et surtout pas en se basant sur un seul type de code [:itm]  
 
tiens par exemple si tu es si fort que ca en python, es tu capable de comprendre tout ce qu'il y a là dedans? [:itm]  

NiLux a écrit :

Ça dépend ce que tu fait, c'est clair que si tu fait un programme en C ouais. Mais si tu fait un script à Neverwinter Nights c'est déjà bien rare quand tu fait une simple fonction (bien que tu utilises ceux de NWN)


un script NWN c'est pas de la programmation :whistle:  

Citation :

et en PHP passer une variable en argument j'ai jamais vu :S


t'as pas du en faire beaucoup alors, du paihachepai [:aloy]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 13-08-2004 à 14:01:32    

"J'ai pas *tout* appris mais j'ai appris les équivalents par rapport aux langages dont j'étais habitué"
 
en gros ta appris a faire un if un for et une fonction (rien koi), et tu applique ca au c comme pour les autres langage
pour resumer tu programme en c à l'aveuglette
 
et ca ve dire quoi "passer une variable en argument"

Reply

Marsh Posté le 13-08-2004 à 14:13:58    

ca veut dire qu'il fout tout dans son main :D

Reply

Marsh Posté le 13-08-2004 à 14:16:44    

je sais ce que ca ve dire "passer une variable en argument", mais NiLux visiblement ne le sais pas et il arrete pas d'utiliser ces termes

Reply

Marsh Posté le 13-08-2004 à 17:28:07    

Masklinn a écrit :

:heink:  
c'est la base de la base du C ca, hein [:itm]  

Code :
  1. bool fct(int & a)
  2. {
  3.     // Opérations sur a
  4.     if(condition) // Si ca a marché
  5.         return true;
  6.     else // Si ca a pas marché
  7.         return false;
  8. }



 
Juste en passant : c'est pas du C ce que tu as écrit, le passage pas référence (& ), les commentaires de type // et le type bool ont été introduit avec le C++. http://forum.hardware.fr/images/perso/itm.gif

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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