[C++]Passage de variable pointeur

Fermé
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 - 9 juil. 2003 à 10:20
maily Messages postés 7556 Date d'inscription lundi 26 juin 2000 Statut Contributeur Dernière intervention 23 juin 2023 - 9 juil. 2003 à 16:08
Salut tout le monde
Je me replonge en ce moment dans le C++ (merci CCM :o) ) et je vois ca:

int Ajout2(int * a){


*a +=2;

}

int * b = 3;

Ajout2(&b);


Hors, arretez moi si je me gourationne, mais b est un pointeur et la fonction Ajout2 prend un pointeur en parametre, jusque la j'ai bon non? Alors pourquoi passer a Ajout2 non pas le pointeur b directement mais sa valeur? Ou alors j'ai loupe une ligne et la declaration dans l'en tete de la fonction veux juste dire "Prend le pointeur de la variable que l'on te passe" auquel cas la question est:
1-Pourquoi declare int * b et non int b
2-Comment faire quand on veut passer un pointeur a une fonction (donc ici directement b)
3-Pourquoi je pose 3 question quand je dis que LA question est? :-D

Merci :o)

.  .
\_/
A voir également:

11 réponses

maily Messages postés 7556 Date d'inscription lundi 26 juin 2000 Statut Contributeur Dernière intervention 23 juin 2023 453
9 juil. 2003 à 12:01
il me semble que tu te gourationnes oui!!
pour moi, dans la ligne

ajout2(&b)


on passe l'adresse de b! non?

Maily   :-))))
0
maily Messages postés 7556 Date d'inscription lundi 26 juin 2000 Statut Contributeur Dernière intervention 23 juin 2023 453
9 juil. 2003 à 12:02
Comme ça, à la fin de l'exécution, b aura 5 comme valeur!!

Maily   :-))))
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
9 juil. 2003 à 12:04
Bon oui, tu as raison, mais alors si je comprend bien, b est un pointeur, on passe l'adresse de b a une fonction qui en prend l'adresse, soit a est l'adresse de l'adresse du pointeur b...Ca fait beaucoup ca non?

.  .
\_/
0
maily Messages postés 7556 Date d'inscription lundi 26 juin 2000 Statut Contributeur Dernière intervention 23 juin 2023 453
9 juil. 2003 à 12:05
Oui, il plante ton programme!!
Tu passes un double pointeur dans
ajout2(&b)

pour que ça marche, il faut mettre
ajout2(b)


Maily   :-))))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
9 juil. 2003 à 12:06
:-S C'est pas mon programme, c'est celui du tuto de Jeff :-S
Il me semblait bien qu'il y avait un truc pas net...

.  .
\_/
0
maily Messages postés 7556 Date d'inscription lundi 26 juin 2000 Statut Contributeur Dernière intervention 23 juin 2023 453
9 juil. 2003 à 12:11
;-)))

Maily   :-))))
0
Baltawar Messages postés 470 Date d'inscription lundi 7 avril 2003 Statut Membre Dernière intervention 5 décembre 2003 10
9 juil. 2003 à 13:25
Salut a toutes et a tous,

Biensur que c'est bon , c'est maily qui a raison, tu passes l'adresse, et b vaut 5 apres, ca evite de faire retourner une valeur a la fonction Ajout2.

A+
0
maily Messages postés 7556 Date d'inscription lundi 26 juin 2000 Statut Contributeur Dernière intervention 23 juin 2023 453
9 juil. 2003 à 13:32
C'est bon seulement si tu écris

ajout2(b)


sinon, tu envoie un pointeur sur un pointeur à une fonction qui demande juste un pointeur!!

Maily   :-))))
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
9 juil. 2003 à 13:47
Que vois je que vois je !!! Vous n'avez pas vu l'aberration ?!?

int * b = 3;

Ca, pas être du tout du tout du tout du tout correct :) Où vous avez vu qu'on pouvait s'amuser à jouer avec un pointeur comme ça?

Vous l'aviez pas vu celle là ?

@++



Vous hésitez entre Linux et Windows ?
Vous voulez dépenser du temps ou de l'argent ?
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
9 juil. 2003 à 13:50
Pour préciser : ça va planter tout de suite tant que vous ne toucherez qu'à la variable elle-même, mais essayez de toucher à *b pour voir :) Ca va vous faire de belles erreurs...

@++

Vous hésitez entre Linux et Windows ?
Vous voulez dépenser du temps ou de l'argent ?
0
maily Messages postés 7556 Date d'inscription lundi 26 juin 2000 Statut Contributeur Dernière intervention 23 juin 2023 453
9 juil. 2003 à 14:25
Et comment tu fais du coup pour donner une valeur la ou pointe b??

Maily   :-))))
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
9 juil. 2003 à 15:37
Tu ne le fais pas.
int *b = 3; n'est absolument pas une instruction légale...

tu dois d'abord allouer ce que tu veux pointer avec b

@++

Vous hésitez entre Linux et Windows ?
Vous voulez dépenser du temps ou de l'argent ?
0
maily Messages postés 7556 Date d'inscription lundi 26 juin 2000 Statut Contributeur Dernière intervention 23 juin 2023 453
9 juil. 2003 à 16:08
Merci...
j'avais zappé l'allocation mémoire!!

Maily   :-))))
0