Question a la con... comme d'hab...

Question a la con... comme d'hab... - C - Programmation

Marsh Posté le 04-12-2003 à 02:54:22    

void modif(int nb_triangles);
 
Voila, ca fait longtemps sans pratiquer et arrive les problemes idiots...
Alors je veux modifier la variable nb_triangles et que cette modification soit valable sur la variable globale qu'est nb_triangles pour pouvoir la recuperer ailleurs...
Bien evidement mon affectation classique ne marche pas...
J'ai fait passer la chose en faisant passer l'adresse de l'entier en parametre mais y'a pas plus simple ?
Merci


---------------
/* Toblerone is so gooooood 4 U */
Reply

Marsh Posté le 04-12-2003 à 02:54:22   

Reply

Marsh Posté le 04-12-2003 à 04:52:49    

Non, y'a pas plus simple. Le prototype de ta fonction sera « void modif(int *nb_triangles) ».
 
Sinon j'imagine que contrairement à ce que tu dis nb_triangles n'est pas une variable globale, sinon a quoi bon la passer en paramètre ?

Reply

Marsh Posté le 04-12-2003 à 08:53:43    

pas bien les variables globales.  
pour un truc aussi simple, tu peux utiliser la valeur de retour
 

Code :
  1. int myTriangle=0 ;
  2. myTriangle = modif(myTriangle) ;
  3. int modif(int v)
  4.     {
  5.     return v+1 ;
  6.     }

Reply

Marsh Posté le 04-12-2003 à 08:54:38    

mais c'est mieux d'utiliser les pointeurs bien entendu...

Reply

Marsh Posté le 04-12-2003 à 10:09:35    

en C++:

Code :
  1. #include <stdio.h>
  2. void modif(int & n);
  3. int main(int argc, char ** argv)
  4. {
  5.         int n = 0;
  6.         printf("n = %d\n", n);
  7.         modif(n);
  8.         printf("n = %d\n", n);
  9.         return(0);
  10. }
  11. void modif(int & n)
  12. {
  13.         n+=10;
  14. }

 
Compilation avec g++:

Code :
  1. $ g++ -o TEST bla.c
  2. $


Execution

Code :
  1. ]$ ./TEST
  2. n = 0
  3. n = 10
  4. $


En C, ça ne marche pas... la solution est les pointeurs

Reply

Marsh Posté le 04-12-2003 à 11:37:01    

western a écrit :

en C++:

Code :
  1. #include <stdio.h>
  2. void modif(int & n);
  3. int main(int argc, char ** argv)
  4. {
  5.         int n = 0;
  6.         printf("n = %d\n", n);
  7.         modif(n);
  8.         printf("n = %d\n", n);
  9.         return(0);
  10. }
  11. void modif(int & n)
  12. {
  13.         n+=10;
  14. }



 
La meme en C

Code :
  1. #include <stdio.h>
  2. void modif(int *n);
  3. int main(int argc, char **argv)
  4. {
  5.         int n = 0;
  6.         printf("n = %d\n", n);
  7.         modif(&n);
  8.         printf("n = %d\n", n);
  9.         return(0);
  10. }
  11. void modif(int *n)
  12. {
  13.         (*n)+=10;
  14. }

 
 
A+,


Message édité par gilou le 04-12-2003 à 11:38:28

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 04-12-2003 à 12:01:15    

Pourquoi une question à la con doit-elle si souvent être associée à un titre à la con ? :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 04-12-2003 à 12:15:01    

western a écrit :

en C++:

Code :
  1. #include <stdio.h>
  2. void modif(int & n);
  3. int main(int argc, char ** argv)
  4. {
  5.         int n = 0;
  6.         printf("n = %d\n", n);
  7.         modif(n);
  8.         printf("n = %d\n", n);
  9.         return(0);
  10. }
  11. void modif(int & n)
  12. {
  13.         n+=10;
  14. }

 
Compilation avec g++:

Code :
  1. $ g++ -o TEST bla.c
  2. $


Execution

Code :
  1. ]$ ./TEST
  2. n = 0
  3. n = 10
  4. $


En C, ça ne marche pas... la solution est les pointeurs

tu te fous de qui  là ?

Reply

Marsh Posté le 04-12-2003 à 12:31:19    

Taz a écrit :

tu te fous de qui  là ?


 :heink: tu explique?

Reply

Marsh Posté le 04-12-2003 à 13:32:04    

je crois qu'il veut te dire que printf c'est PAS du c++...

Reply

Marsh Posté le 04-12-2003 à 13:32:04   

Reply

Marsh Posté le 04-12-2003 à 13:32:47    

western a écrit :


 :heink: tu explique?


ben tu files un code sensé être en C++ alors qu'il est tout en C

Reply

Marsh Posté le 04-12-2003 à 13:35:25    

putain il voulait juste montrer la difference pointeur / reference, qu'est ce que vous nous chiez un cake sur un printf a la fin ? On s'en branle, c'est pas le sujet

Reply

Marsh Posté le 04-12-2003 à 13:40:33    

Harkonnen a écrit :


ben tu files un code sensé être en C++ alors qu'il est tout en C


certes, mais IL Y A DES FAçONS POLIS de le dire, non?

Reply

Marsh Posté le 04-12-2003 à 13:49:36    

western a écrit :


certes, mais IL Y A DES FAçONS POLIS de le dire, non?


 
c est typique...

Reply

Marsh Posté le 04-12-2003 à 14:10:05    

Là il est poli, d'habitude il demande directement la moderation du topic [:chacal_one333]
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 04-12-2003 à 14:32:19    

gilou a écrit :

Là il est poli, d'habitude il demande directement la moderation du topic [:chacal_one333]
A+,


lol! qui est 'Pour' pour renvoyer Taz dans sa Tasmanie?

Reply

Marsh Posté le 04-12-2003 à 14:33:42    

western a écrit :


lol! qui est 'Pour' pour renvoyer Taz dans sa Tasmanie?


 
bah en même temps, il est comme il est mais ce serait bien dommage de se passer de ses connaissances

Reply

Sujets relatifs:

Leave a Replay

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