[c++] question bête sur les pointeurs

question bête sur les pointeurs [c++] - C++ - Programmation

Marsh Posté le 06-02-2005 à 23:02:29    

J'ai une question plutot bête sur les pointeurs, désolé si ça vous semble con mais j'aimerais bien savoir comment modifier la valeur d'une variable passée en argument ?
 
Par cela je veux dire:
 

Code :
  1. void fonction(int a)
  2. ...
  3. int main(void)
  4. {
  5.     int a=0;
  6.     cout << "a vaut " << a << endl; //ici a vaut 0
  7.     fonction(a);
  8.     cout << "maintenant a vaut " << a << endl; //ici a vaut 1
  9.     return 0;
  10. }


 
J'ai essayé quelque combinaisons pour pouvoir changer la valeur de a dans la fonction mais je ne dois pas trouver la bonne... Vous savez comment résoudre le problème :??:


---------------
Et toi, tu crois que les ours polaires vont chier dans les bois ?
Reply

Marsh Posté le 06-02-2005 à 23:02:29   

Reply

Marsh Posté le 06-02-2005 à 23:07:52    

Reply

Marsh Posté le 06-02-2005 à 23:08:09    

void fonction(int a) -> pas pointeur, là tu fais un passage par valeur donc le a à l'intérieur de la fonction est simplement une copie du a à l'extérieur
 
renseigne toi sur les pointeurs justement, parce que là il n'y en a pas la queue d'un


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

Marsh Posté le 06-02-2005 à 23:10:30    

Pourquoi faire des pointeurs ?

Reply

Marsh Posté le 06-02-2005 à 23:12:29    

Merci à vous :hello:


---------------
Et toi, tu crois que les ours polaires vont chier dans les bois ?
Reply

Marsh Posté le 06-02-2005 à 23:12:58    

parce que c'était sa question?
parce que c'est plus clair que les références quand on commence?


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

Marsh Posté le 06-02-2005 à 23:50:18    

Masklinn a écrit :

parce que c'était sa question?
parce que c'est plus clair que les références quand on commence?


 
 
oui et plsu casse gueule, les références en C++ c'est obligatoirement ultime :o

Reply

Marsh Posté le 07-02-2005 à 10:16:32    

STOP
 
passage par valeur: à utiliser pour des types prédéfinis quand on ne veut pas modifié la valeur de la variable..
 
passage par pointeur: à utiliser pour les types prédéfinis quand on veut modifié la valeur de la variable
 
passage par référence: à utilisé pour les types définis par l'utilisateur...
 
un type prédéfinis: int, long, short, char, etc...
un type définis par le user: une classe propre à lui
 
void fonction(int * a)  
...  
 
 
int main(void)  
{  
    int a=0;  
    cout << "a vaut " << a << endl;      
    fonction(&a);  
    cout << "maintenant a vaut " << a << endl;      
    return 0;  
}
 
void Fonction (int * a)
{
    *a = 1;
}
 
voila et le tour est joué...
 
il est totalement inutile de le passé par référence puisque c'est un type prédéfinis...
 
 
pesonnellement j'appele pas ce genre de programme du C++, mais plutot du C en utilisant les méthodes du C++...
 
si tu débute dans la programmation, commence par faire du C... Le C++ est un language orienté objet améliorant les bases du C.
 
donc perso, si tu ne travailel que comme ça, fais du c, pas du C++, ça te complique les choses la... le C est plus facile à apprendre...
 
 


Message édité par moi23372 le 07-02-2005 à 10:19:10
Reply

Marsh Posté le 07-02-2005 à 10:53:53    

Code :
  1. int fonction()
  2. {
  3.   return 1;
  4. }
  5. a=fonction();


 
la première chose à lui apprendre c'est quand utiliser les pointeurs :D

Reply

Marsh Posté le 07-02-2005 à 10:57:29    

moi23372 a écrit :

passage par pointeur: à utiliser pour les types prédéfinis quand on veut modifié la valeur de la variable
 
passage par référence: à utilisé pour les types définis par l'utilisateur...
 
un type prédéfinis: int, long, short, char, etc...
un type définis par le user: une classe propre à lui
 
void fonction(int * a)  
...  
 


 
c'est quoi ces salades ? qu'est ce qui t'empeche de faire  
void fonction(int &a); ?

Reply

Marsh Posté le 07-02-2005 à 10:57:29   

Reply

Marsh Posté le 07-02-2005 à 11:02:10    

et void fonction(MyType * a) :o


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

Marsh Posté le 07-02-2005 à 11:44:13    

j'ai pas dis qu'on ne pouvais pas le faire, c'est clair que ça marche...
 
mais les règles de bonnes conduites du C++ ne le préconise pas...  
faite à votre guise, mais retenez bien ce que j'ai mis, si C++ le préconise c'est pas pour rien.
C'est pas moi qui l'ait pondu, c'est écris dans tout bon manuel de C++... Et croyez moi je m'y connais la dedans.

Reply

Marsh Posté le 07-02-2005 à 11:46:26    

moi23372 a écrit :


mais les règles de bonnes conduites du C++ ne le préconise pas...  
faite à votre guise, mais retenez bien ce que j'ai mis, si C++ le préconise c'est pas pour rien.
C'est pas moi qui l'ait pondu, c'est écris dans tout bon manuel de C++... Et croyez moi je m'y connais la dedans.


 :lol:  :lol:  :lol:  
C'est bien de ne douter de rien.
 


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 07-02-2005 à 11:51:20    

schnapsmann a écrit :

:lol:  :lol:  :lol:  
C'est bien de ne douter de rien.


Puisqu'il te dit qu'il s'y connait... :o
http://forum.hardware.fr/forum2.ph [...] =1#t973870

Reply

Marsh Posté le 07-02-2005 à 11:53:37    

moi23372 a écrit :

Et croyez moi je m'y connais la dedans.


Ca, c'est le genre de trucs à ne surtout pas mettre quand tu es étudiant, que c'est écrit dans ton profile et que la majorité des intervenants bosse dans la branche (en tant que pros) [:aloy]  
Tu vas te faire défoncer si certains tombent sur le topic [:aloy]  
 
Edit/Lam's:
Ah ben dommage, ILS ont commencé à débarquer [:moule_bite]


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

Marsh Posté le 07-02-2005 à 11:55:42    

moi23372 a écrit :

j'ai pas dis qu'on ne pouvais pas le faire, c'est clair que ça marche...
 
mais les règles de bonnes conduites du C++ ne le préconise pas...  
faite à votre guise, mais retenez bien ce que j'ai mis, si C++ le préconise c'est pas pour rien.
C'est pas moi qui l'ait pondu, c'est écris dans tout bon manuel de C++... Et croyez moi je m'y connais la dedans.


 
Je crois que tu mélanges types non fondamentaux et types définis par l'utilisateur (qui peuvent êtres des enumérations, des structures, des classes, des typedef d'autres types, etc.)
 
Je crois aussi que tu mélanges constness et passage par valeur.  
 
Et je crois que tu mélanges optimisation, protection, typage et encapsulation. Rien n'empêche de passer une référence constante vers un entier, si on veut que le-dit entier soit modifiable depuis une autre thread...


Message édité par Lam's le 07-02-2005 à 11:56:36
Reply

Marsh Posté le 07-02-2005 à 11:58:46    

Si c'est un troll, c'est du haut vol à la samuelp/ptramo.


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 07-02-2005 à 14:04:13    

mais c'est clair ^^
 
void f(const int& a) ets tous ce qu'il y a de plus C++-esque

Reply

Marsh Posté le 07-02-2005 à 14:04:57    

Masklinn a écrit :

quand tu es étudiant


 
en informatique de gestion [:aloy]

Reply

Marsh Posté le 07-02-2005 à 14:09:05    

Joel F a écrit :

en informatique de gestion [:aloy]


Que ce soit en informatique de gestion ou en empaquetage de choucroute lyophilisée, hein


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

Marsh Posté le 07-02-2005 à 14:10:29    

[:dawa] ^^

Reply

Marsh Posté le 07-02-2005 à 14:13:33    


Etant également étudiant (pour ~6-9 mois si je merde pas), je sais à peu près ce que ca donne [:moule_bite]


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

Marsh Posté le 07-02-2005 à 14:17:50    

certes oui

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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