Bonjour à tous, je débute en c++, et je suis arrivé au chapitre objet et pointeur, et je voudrais savoir si c'est possible d'orienter le pointeur de l'objet vers une variable dans le main ? Merci de votre aide dans ma compréhension![]()
Bonjour à tous, je débute en c++, et je suis arrivé au chapitre objet et pointeur, et je voudrais savoir si c'est possible d'orienter le pointeur de l'objet vers une variable dans le main ? Merci de votre aide dans ma compréhension![]()
Oui.
Un pointeur c'est justement fait pour pointer sur une variable ou une zone dynamiquement allouée.
Tous les exemples simples de code avec pointeurs utilisent souvent un pointeur sur une variable de la fonction main().
Salut,
Il faut déjà comprendre ce qu'est un pointeur : ce n'est rien d'autre qu'une variable numérique entière (généralement) non signée qui représente ... l'adresse mémoire à laquelle on (est sensé / espère) pouvoir trouver une donnée du type indiqué.
Une fois que tu as compris cela, le reste coule presque de source:
- Dés qu'une information est en mémoire, il peut y avoir un pointeur dont la valeur correspond à l'adresse mémoire à laquelle cette information se trouve
- dés que tu es en mesure de désigner clairement cette information au travers d'un nom (d'un identifiant), tu peux demander au compilateur de fournir l'adresse à laquelle elle se trouve.
- dés que tu peux demander l'adresse mémoire à laquelle se trouve une information quelconque, tu peux affecter cette adresse à un pointeur
Notes cependant que les pointeurs posent énormément de problèmes, entre autres, parce qu'il n'y a rien qui ressemble d'avantage au contenu d'une adresse mémoire donnée ... que le contenu d'une autre adresse mémoire au niveau du processeur.
Si on essaye d'accéder au contenu d'une adresse mémoire (au travers d'un pointeur) qui, pour une raison ou une autre, ne contient pas l'information espérée, cela provoquera immanquablement des catastrophes.
Or, C et C++ sont très différents à ce point de vue, car, si l'on est pour ainsi dire obligés d'apprendre à manipuler des pointeurs en C dés le deuxième chapitre, C++ nous offre énormément de possibilités de "faire autrement", et de ne devoir réellement s'intéresser à la notion de pointeurs qu'une fois que l'on aborde les problèmes liés au polymorphisme
Je ne sais pas quel cours ou tutoriel tu es occupé à suivre, mais, de manière générale, le simple fait que tu poses ta question me laisse à penser que le chapitre qui parle des pointeurs est le deuxième ou le troisième de ton cours.
Si je peux te donner un conseil, c'est sans doute de fuir ce cours ou ce tutoriel comme la peste, car il suit -- de toutes évidences -- "l'approche historique" de l'apprentissage du C++, et qu'il risque très fort de te donner un tas de (très) mauvaises habitudes, dont tu auras sans doute le plus grand mal à te défaire par la suite, afin de commencer à réellement coder en C++![]()
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Merci de votre aide, mais en gros c'est sur l'utilisation des pointeurs par rapport aux objets, je voulais savoir si c'est possible de déclarer un pointeur dans un objet et le faire pointer vers une variable déclaré dans le main, car ils ont montré comment faire le pointeur d'un objet pointer vers un autre objet ou un pointeur dans le main pointer vers une variable du main, mais je souhaitais faire le pointeur d'un objet pointer vers une variable déclaré dans le main, j'ai l'impression que ce n'est pas possible![]()
Je ne vois pas ce qui te bloque. Il faudrait un exemple.
Quand on n'est pas dans dans le main, on n'a pas accès aux variables dans main(). Mais on a pu prendre leur adresse avant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class UnObjet { public: int* unPointeurSurUnEntierQuelconque; }; void uneFonction( int* adresseDUneVariable ) { UnObjet monObjet; monObjet.unPointeurSurUnEntierQuelconque = adresseDUneVariable; // L'objet a un pointeur sur une variable du main() } int main() { int variableDansMain = 2; uneFonction( &variableDansMain ); // appel de fonction, on lui passe l'adresse de la variable (donc un pointeur). }
Ah d'accord c'est que je le faisais mal, j'avais déclaré le pointeur dans privée, et dans le constructeur j'avais mis que le pointeur=&variableDonc par la fonction je passe l'adresse de la variable ? Ok je vous remercie énormément
![]()
Partager