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

  FORUM HardWare.fr
  Programmation
  C++

  petite question sur les pointeurs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

petite question sur les pointeurs

n°240510
blackgodde​ss
vive le troll !
Posté le 06-11-2002 à 14:42:42  profilanswer
 

par exemple j'ai :
 
int* i;
 
est-il possible d'écrire
(*i) = 10;
pour que l'int pointé par i soit égal à 10 ?
 
et encore une question :
 
j'ai :
 
int* i;
int j;
 
si jms l'écriture du dessus est juste :
(*i) = 10;
 
donc est-il possible d'écrire :
(&j) = i;
 
pour que i et j pointent vers le mm nombre ?


---------------
-( BlackGoddess )-
mood
Publicité
Posté le 06-11-2002 à 14:42:42  profilanswer
 

n°240519
nicolasm
Posté le 06-11-2002 à 14:50:16  profilanswer
 

blackgoddess a écrit a écrit :

par exemple j'ai :
 
int* i;
 
est-il possible d'écrire
(*i) = 10;
pour que l'int pointé par i soit égal à 10 ?




>> utilisation normale du pointeur
 

Citation :


et encore une question :
 
j'ai :
 
int* i;
int j;
 
si jms l'écriture du dessus est juste :
(*i) = 10;
 
donc est-il possible d'écrire :
(&j) = i;
 
pour que i et j pointent vers le mm nombre ?


 
fait plutot ca
j=(*i);  la tu copie la valeur c est mieux ke d utiliser la meme adresse en memoire(moins dangereux et + comprehensible pour la maintenance)


Message édité par nicolasm le 06-11-2002 à 14:50:51
n°240523
*syl*
--> []
Posté le 06-11-2002 à 14:53:56  profilanswer
 

blackgoddess a écrit a écrit :

par exemple j'ai :
 
int* i;
 
est-il possible d'écrire
(*i) = 10;
pour que l'int pointé par i soit égal à 10 ?


Sans faire un i = new int ;ça va être dur..
 

blackgoddess a écrit a écrit :

et encore une question :
 
j'ai :
 
int* i;
int j;
 
si jms l'écriture du dessus est juste :
(*i) = 10;
 
donc est-il possible d'écrire :
(&j) = i;
 
pour que i et j pointent vers le mm nombre ?



Nop, faut que t'écrives i = &j (pas besoin de new là) pour que i pointent vers j..

n°240538
blackgodde​ss
vive le troll !
Posté le 06-11-2002 à 15:01:01  profilanswer
 

(désolé pour l'oubli du new) et merci @ tt les 2, me voila éclairé :)


---------------
-( BlackGoddess )-
n°240659
leneuf22
Posté le 06-11-2002 à 15:35:11  profilanswer
 

Et n'oublie pas le delete :)

n°240667
blackgodde​ss
vive le troll !
Posté le 06-11-2002 à 15:46:10  profilanswer
 

lol wé c vrai new fonctionne tjs avec delete (en tout cas il vaut mieux :))


---------------
-( BlackGoddess )-
n°240693
Ace17
Posté le 06-11-2002 à 15:58:52  profilanswer
 

*syl* a écrit a écrit :

Sans faire un i = new int ;ça va être dur..




 
Mais bien sur que non! On peut tres bien utiliser les pointeurs pour faire autre chose que de l'allocation dynamique de mémoire!!!

Code :
  1. int a;
  2. int* p = &a;
  3. *p = 2; // a = 2 maintenant


Ou encore :  

Code :
  1. void swap(int* a, int* b)
  2. {
  3. int temp = *a;
  4. *a = *b;
  5. *b = temp;
  6. }

n°240696
*syl*
--> []
Posté le 06-11-2002 à 16:01:55  profilanswer
 

Ace17 a écrit a écrit :

 
 
Mais bien sur que non! On peut tres bien utiliser les pointeurs pour faire autre chose que de l'allocation dynamique de mémoire!!!


Hé mec, relis mon post et tu verras que ton message n'a pas lieu d'être.. :p

n°240708
Ace17
Posté le 06-11-2002 à 16:04:56  profilanswer
 

*syl* a écrit a écrit :

Hé mec, relis mon post et tu verras que ton message n'a pas lieu d'être.. :p  




Ben je veux bien te faire confiance; désolé si je t'ai mal compris :)
mais explique moi ce que j'ai loupé dans ton post  :p

n°240711
blackgodde​ss
vive le troll !
Posté le 06-11-2002 à 16:05:34  profilanswer
 

oui il n'a p-e pas lieu d'être mais l'exemple de la fonction swap m'interresse bcp, merci à toi aussi


---------------
-( BlackGoddess )-
mood
Publicité
Posté le 06-11-2002 à 16:05:34  profilanswer
 

n°240714
*syl*
--> []
Posté le 06-11-2002 à 16:07:01  profilanswer
 

Ace17 a écrit a écrit :

 
Ben je veux bien te faire confiance; désolé si je t'ai mal compris :)
mais explique moi ce que j'ai loupé dans ton post  :p  




Ça :

blackgoddess a écrit a écrit :

et encore une question :
 
j'ai :
 
int* i;
int j;

 
si jms l'écriture du dessus est juste :
(*i) = 10;
 
donc est-il possible d'écrire :
(&j) = i;
 
pour que i et j pointent vers le mm nombre ?



Nop, faut que t'écrives i = &j (pas besoin de new là) pour que i pointent vers j..

n°240718
Ace17
Posté le 06-11-2002 à 16:10:01  profilanswer
 

lol ok ; bon on va dire que c'était pas assez clair pour moi :-)

n°241075
Musaran
Cerveaulté
Posté le 07-11-2002 à 05:01:35  profilanswer
 

Citation :

int* i;
 
est-il possible d'écrire
(*i) = 10;
pour que l'int pointé par i soit égal à 10 ?

On t'as déjà répondu que oui, mais je rajoute:
Si p est un pointeur, *p est l'objet pointé, avec toutes ses propriétés et ses possibilités.

Code :
  1. *p= 0; //écrire dans un entier
  2. (*p).mem ;//accéder au membre d'une structure
  3. (*p)() ; //appeler une fonction
  4. (*p)[n] ; //indicer un tableau
  5. &(*p) ; //la même adresse que dans le pointeur

Ce principe de pouvoir intact est important, car il s'applique à toutes les constructions du C, et permet d'aller asser loin:

Code :
  1. a[i](); //appel d'un pointeur de fonction issu d'un tableau.
  2. f().ma[i]; //indicer un tableau membre d'une structure renvoyée par une fonction
  3. (t ? f1 : f2)() ; //appel d'une fonction différente selon t
  4. (*(t ? &i : &j))++ ; //incrémenter i (t vrai) ou j (t faux)

On peut faire pire... il n'y a pas de limite de taille.
 
 

Citation :

int* i;
int j;
 
si jms l'écriture du dessus est juste :
(*i) = 10;
 
donc est-il possible d'écrire :
(&j) = i;
 
pour que i et j pointent vers le mm nombre ?

Non.
L'adresse d'un objet/variable n'est pas une variable (lvalue) mais une valeur (rvalue).
lvalue fait référence au fait que l'objet peut apparaître à gauche (Left) du signe "=", sans considérer l'éventuelle constance.
rvalue est l'opposé: une valeur, et on ne peut pas changer la valeur d'une valeur, seulement générer une autre valeur.
 
Typiquement, on peut prendre l'adresse d'une rvalue (son stockage), pas d'une valeur.
 
En fait, C se contente d'évaluer les expressions, il ne peut pas faire le chemin inverse de choisir les termes de l'expression pour que le résultat soit bon.
La différence entre le pas-à-pas du programmeur et l'équation du mathématiciens...


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone

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

  petite question sur les pointeurs

 

Sujets relatifs
[C++]question con : c est quoi un pointeur?question sur "read" entre autres
[SQL] Petite question sur les cles etrangeresQuestion sur le code des pages web
Question de CSS[VC++] question de noob
[PHP] Petite question toute simple[Access97] Débutant cherche a créer petite macro.
[C] Petite question sur les pointeurs deux étoiles qui se suivent[c++] petite question sur les pointeurs (pas un problème)
Plus de sujets relatifs à : petite question sur les pointeurs


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