Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2492 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] Question sur les pointeurs, aidez moi à comprendre svp !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Question sur les pointeurs, aidez moi à comprendre svp !

n°227541
tonio_10
Posté le 13-10-2002 à 13:13:43  profilanswer
 

Voila je suis en spé, et on vient de faire style 1H de cours en info sur les pointeurs et j'ai pas vraiment compris. Genre déjà qu'est-ce qu'un pointeur, que signifie Pt=&A; ou encore *Nom Pointeur; *Pt etc...
Bref, si qq'1 pouvait me faire un pti résumé de ce qu'il savoir et surtout comprendre ca serait sympa. Mecri.  :)


---------------
Be myself, I have nothing to prove...
mood
Publicité
Posté le 13-10-2002 à 13:13:43  profilanswer
 

n°227546
yaisseloul​ou
Elle m'éneeeeeeerve !
Posté le 13-10-2002 à 13:39:48  profilanswer
 

Bein en gros quand tu déclares une variable destinée a recevoir un pointeur d'une variable entière tu fais:
 
int brol* ;  (brol est le réceptacle)
 
disons que tu as une variable entière int x, pour mettre l'adresse de la variable dans le receptacle(pointeur) brol, tu fais:
 
brol = &x;
 
en gros "*" pour dire que c'est un pointeur
"&" pour dire que c'est l'adresse de la variable qu'on veut et pas sa valeur  :)
 
@+


Message édité par yaisseloulou le 13-10-2002 à 13:48:30
n°227548
yaisseloul​ou
Elle m'éneeeeeeerve !
Posté le 13-10-2002 à 13:41:17  profilanswer
 

si tu as:  
 
int *a;
et
int b;  
 
et que tu fais a = b; ça ne marchera pas !!
 
idem si tu fais ça
 
int *a;  
 
bool p;  
 
a = &p; selon le compilo ça n'ira pas non plus il faut que le pointeur soit du même type que la varibable ...

n°227593
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-10-2002 à 15:53:09  profilanswer
 

t'es en spé et tu captes pas les pointeurs ?  :ouch:

n°227600
farib
Posté le 13-10-2002 à 16:01:04  profilanswer
 

la mémoire c'est un livre
 
uen adresse c'est le numéro de la page ou se trouve l'information qui t'intéresse
 
 
un pointeur est une variable qui contient l'adresse


Message édité par farib le 13-10-2002 à 16:02:35
n°227777
LeGreg
Posté le 14-10-2002 à 01:33:23  profilanswer
 

Harkonnen a écrit a écrit :

t'es en spé et tu captes pas les pointeurs ?  :ouch:  




 
ben moi j'ai appris le C deux ans apres la Spe
alors y'a pas de honte, hein !
 
LeGreg

n°227778
LeGreg
Posté le 14-10-2002 à 02:04:13  profilanswer
 

En gros un pointeur c'est une adresse memoire (dans la plupart des langages qui utilisent des pointeurs). Ca pourrait etre autre chose, conceptuellement. C'est juste que pour simplifier le travail, en C, pointeur = adresse memoire.
 
Un pointeur est type (meme s'il a le type void, c'est type)
c'est a dire que autant que possible on ne melange pas les pointeurs de types incompatibles. (en C on peut mais c'est deconseille).  
 
C'est a dire que tu as plusieurs types de pointeurs, un qui pointe vers une variable de type int, l'autre qui pointe vers une struct, ou encore un qui pointe vers une variable de type pointeur vers int (ahah ca se complique) etc..
 
En C on peut les melanger parce que les pointeurs sont des adresses memoires et donc peuvent tous etre ramenes a un type (void*) mais il faut etre conscient qu'on s'expose a des problemes si l'on manipule une banane comme on manipulerait un camion.
 
Tu as des operateurs definis sur les types, le premier c'est l'operateur d'adresse &. Quand tu as defini une variable, elle est TOUJOURS presente a un endroit precis en memoire. C'est pour ca que tu peux demander son adresse par l'operateur &. Une fois que tu as l'adresse de la variable tu peux mettre sa valeur dans un pointeur vers le type de la variable. Tu as une variable de type int, tu as un pointeur vers int, tu peux demander l'adresse de la premiere et la placer dans la seconde:
int toto;
int* pToto = &toto;
comme pToto est une variable, elle est presente a un endroit precis en memoire et donc tu peux egalement demander son adresse et la mettre dans une variable de type pointeur vers pointeur d'int:
int **ppToto = &pToto;
 
Le deuxieme operateur c'est l'operateur de deferencement *. Quand tu as une adresse memoire, tu veux savoir ce qu'il y a a cette adresse. c'est la que tu utilises l'operateur *.
Exemple, tu as recupere un pointeur int* pToto, et tu voudrais connaitre ou modifier la valeur de la variable presente a l'adresse pointee par pToto. tu fais donc:
int totobis = *pToto;
C'est donc d'une certaine facon l'operateur inverse de &.
totobis est une nouvelle variable, c'est a dire qu'elle est physiquement presente en memoire mais a une adresse differente de toto. Meme si elle en partage la valeur. (elle partage la valeur de toto, tant qu'on ne modifie pas toto ou totobis).
par contre *pToto vaudra toujours la valeur de toto, jusqu'a ce qu'on change l'adresse pointee par pToto. L'inverse est vrai: si tu modifies la valeur de *pToto, toto changera de la meme maniere.
 
Le pointeur permet donc d'etendre le scope d'une variable.
C'est a dire si toto est defini dans ton main, et que tu souhaites que l'une de tes fonctions puisse modifier la valeur de toto, tu es oblige (en C) de passer un pointeur vers toto a la fonction. Cette fonction qui a un parametre pToto, pourra modifier *pToto, et donc du meme coup modifier la valeur de toto.
 
Le pointeur permet egalement d'allouer des variables de facon dynamique et manuelle. (contrairement a l'allocation dynamique et automatique). (malloc renvoie un pointeur).
 
Le pointeur permet de designer un tableau d'objet. Si tu as un objet de type int a l'adresse pToto, tu as un autre objet de type int a l'adresse pToto+1. Evidemment, il faut prealablement avoir alloue (manuellement ou automatiquement) suffisamment d'espace pour pouvoir librement acceder ou ecrire a l'adresse pToto+1, sinon il y a des chances que quelque chose d'autre qu'un int se trouve en pToto+1..
 
Voila un rapide appercu de ce que sont les pointeurs,
il y a encore beaucoup a en dire (array et pointeur NULL en C, differents types de cast en C++, pointeur ou reference en C++, typesafety constness etc..)
 
LeGreg

n°227945
Musaran
Cerveaulté
Posté le 15-10-2002 à 00:36:41  profilanswer
 

legreg a écrit a écrit :

Quand tu as defini une variable, elle est TOUJOURS presente a un endroit precis en memoire.


Pas toujours.
On ne peut prendre l'adresse d'une variable spécifiée register, par exemple.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°228641
YungMakko
Posté le 16-10-2002 à 12:32:45  profilanswer
 

Harkonnen a écrit a écrit :

t'es en spé et tu captes pas les pointeurs ?  :ouch:  




 
Tout le monde n'a pas ton intelligence, mon cher Harkonnen, ni tes talents pédagogiques, ni tes incroyables connaissances informatiques.
 
N'oublies pas non plus que la force rend humble.
 
Bien à toi!


Message édité par YungMakko le 16-10-2002 à 12:33:27

---------------
In tartiflette, we trust!
n°228670
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 16-10-2002 à 13:34:17  profilanswer
 

Roooo, mais pq à chaque fois que je dis un truc tt le monde le prend mal ? :(
Je trouvais juste ça bizarre, c tout !
Les pointeurs s'apprennent en 1ere année d'IUT info (de mon temps en tout cas :d), et c pour ça que je trouve bizarre que tu n'abordes les pointeurs qu'en spé, surtout si tu as fait de la prog avant. Ca n'avait rien de méchant !
 
:hello:

mood
Publicité
Posté le 16-10-2002 à 13:34:17  profilanswer
 

n°228967
LeGreg
Posté le 16-10-2002 à 21:00:33  profilanswer
 

Harkonnen a écrit a écrit :

Roooo, mais pq à chaque fois que je dis un truc tt le monde le prend mal ? :(
Je trouvais juste ça bizarre, c tout !
Les pointeurs s'apprennent en 1ere année d'IUT info (de mon temps en tout cas :d), et c pour ça que je trouve bizarre que tu n'abordes les pointeurs qu'en spé, surtout si tu as fait de la prog avant. Ca n'avait rien de méchant !




 
oui il y a des gens qui apprennent ce qu'est un pointeur en CM2
et d'autres qui ne sauront jamais ce que c'est (les fous)
c'est bizarre mais c'est comme ca que la vie est faite.
 
Ceci dit, IUT d'info != math sup/spe
ceci devant expliquer cela :)
 
LeGreg


Message édité par LeGreg le 16-10-2002 à 21:06:25
n°228974
LeGreg
Posté le 16-10-2002 à 21:05:54  profilanswer
 

Musaran a écrit a écrit :

Pas toujours.
On ne peut prendre l'adresse d'une variable spécifiée register, par exemple.




 
ahah et que repond l'operateur & sur une variable
specifiee en register ?
 

Citation :

ANSI C does not allow for taking the address of a register object; this restriction does not apply to C++. However, if the address-of operator (&) is used on an object, the compiler must put the object in a location for which an address can be represented. In practice, this means in memory instead of in a register.


 
de plus, l'optimisateur de VC ignore toutes les requetes "register".
 
Mais bon c'est un cas tres particulier du C (C++)
qu'il est bon d'ignorer.
 
LeGreg

n°229154
Musaran
Cerveaulté
Posté le 17-10-2002 à 03:50:38  profilanswer
 

Merci maître !
 
En est-il de même avec inline ?
Je sais qu'en C++, cela la force à exister en mémoire.
Mais en C99 ?


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°229199
Kristoph
Posté le 17-10-2002 à 09:52:25  profilanswer
 

"volatile" force une variable en memoire.
 
On fait du C++ en spé maintenant ??? Pour moi c'était du Pascal et du Caml et l'aspect "pédagogique" du C++ m'échape.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] Question sur les pointeurs, aidez moi à comprendre svp !

 

Sujets relatifs
Les tours Hanoi en java en applet ... Aidez moiAidez moi a completer cette Expression régulière
Delete et tableau de pointeurstoute p'tite question
AIDEZ MOI SVP, C'EST TRES IMPORTANT POUR MON GRADUATpetite quéstion sur le script "Advanced Poll"
Pb #1 : Resolu -> Nouvelle QUESTION Pb #2question a la con....
Question Layer - JavascriptComprendre comment marche un script pour l'adapter.
Plus de sujets relatifs à : [C++] Question sur les pointeurs, aidez moi à comprendre svp !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR