Donner une variable en argument dans une fonction [Cpp] - C++ - Programmation
Marsh Posté le 12-08-2004 à 12:48:09
c'est la base de la base du C ca, hein
Code :
|
Marsh Posté le 12-08-2004 à 13:08:30
Surdéfinition de fonctions
Code :
|
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.
Marsh Posté le 12-08-2004 à 13:13:25
ReplyMarsh 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 ...
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.
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.
Marsh Posté le 12-08-2004 à 13:25:15
Sauf que ça marche pas ^^ 0 est un int et on demande un &int
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.
Marsh Posté le 12-08-2004 à 13:31:00
NiLux a écrit : ah ouais ^^ |
en être à ne pas savoir faire une fonction j'appelle pas ca "venu tout seul"
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
Marsh Posté le 12-08-2004 à 13:31:25
Et en mettant la refèrence constante ça doit marcher je pense
Marsh Posté le 12-08-2004 à 13:33:10
vachement utile si on veut modifier la valeur au sein de la fonction, le const
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 ...
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);
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".
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
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)
Marsh Posté le 12-08-2004 à 13:59:06
la notion de procédure n'existe pas en C, là tu parles Pascal
Marsh Posté le 12-08-2004 à 14:06:32
(C'est franchement peu important, enfin merci pour l'info quand même : )
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 |
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
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
Marsh Posté le 12-08-2004 à 23:18:22
NiLux a écrit : |
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?
Marsh Posté le 13-08-2004 à 10:03:56
Ace17 a écrit : |
Il n'y avait pas de smiley méprisants, le smiley méprisant c'est
j'ai utilisé et , des smileys de doute
Marsh Posté le 13-08-2004 à 11:00:41
Ace17 a écrit : 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 |
la l'exemple est valide
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.)
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 : |
c'est tres frequents en c, mais de quoi tu parle ? ya que ca...
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
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
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.
Marsh Posté le 13-08-2004 à 13:59:55
NiLux a écrit : |
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
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
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?
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
Citation : et en PHP passer une variable en argument j'ai jamais vu :S |
t'as pas du en faire beaucoup alors, du paihachepai
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"
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
Marsh Posté le 13-08-2004 à 17:28:07
Masklinn a écrit :
|
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++.
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.