Rechercher : dans
Par :

[C++]Passage de variable pointeur

Dernière réponse le 9 jui 2003 à 16:08:14 teebo, le 9 jui 2003 à 10:20:12 
 Signaler ce message aux modérateurs

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)

.  .
\_/

Meilleures réponses pour « [C++]Passage de variable pointeur » dans :
Langage C - Les variables Voir Le concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C sont typées, c'est-à-dire que les données contenues dans...
Langage C++ - Les variables Voir Le concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C++ sont typées, c'est-à-dire que les données contenues dans...
Les templates en C++ VoirIntroduction Avantages Inconvénients Quand utiliser des templates ? Que dois-je mettre dans les .hpp et dans les .cpp ? Convention de notations Quelques templates célèbres STL BGL Premiers pas Spécifications de templates Template par...
Les pointeurs en langage C VoirDéfinition d'un pointeur Un pointeur est une variable contenant l'adresse d'une autre variable d'un type donné. La notion de pointeur fait souvent peur car il s'agit d'une technique de programmation très puissante, permettant de définir des...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...

1

maily, le 9 jui 2003 à 12:01:31

Il me semble que tu te gourationnes oui!!
pour moi, dans la ligne

ajout2(&b)


on passe l'adresse de b! non?

Maily   :-))))

Répondre à maily

2

maily, le 9 jui 2003 à 12:02:28

Comme ça, à la fin de l'exécution, b aura 5 comme valeur!!

Maily   :-))))

Répondre à maily

3

teebo, le 9 jui 2003 à 12:04:09

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?

.  .
\_/

Répondre à teebo

4

maily, le 9 jui 2003 à 12:05:25

Oui, il plante ton programme!!
Tu passes un double pointeur dans

ajout2(&b)

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


Maily   :-))))

Répondre à maily

5

teebo, le 9 jui 2003 à 12:06:59

:-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...

.  .
\_/

Répondre à teebo

6

maily, le 9 jui 2003 à 12:11:54

;-)))

Maily   :-))))

Répondre à maily

7

Baltawar, le 9 jui 2003 à 13:25:40

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+

Répondre à Baltawar

8

maily, le 9 jui 2003 à 13:32:05

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   :-))))

Répondre à maily

9

batmat, le 9 jui 2003 à 13:47:39

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 ?

Répondre à batmat

10

batmat, le 9 jui 2003 à 13:50:19

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 ?

Répondre à batmat

11

maily, le 9 jui 2003 à 14:25:24

Et comment tu fais du coup pour donner une valeur la ou pointe b??

Maily   :-))))

Répondre à maily

12

batmat, le 9 jui 2003 à 15:37:11

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 ?

Répondre à batmat

13

 maily, le 9 jui 2003 à 16:08:14

Merci...
j'avais zappé l'allocation mémoire!!

Maily   :-))))

Répondre à maily
Collection CommentÇaMarche.net