[C/C++] Conversion de pointeurs

Conversion de pointeurs [C/C++] - Programmation

Marsh Posté le 15-08-2002 à 17:12:56    

Bonjour,
 
Si j'ai un 'char *' que je veux transformer en 'int' pour faire des opérations dessus, sans utiliser de fonctions, je
fais ceci :
 

Code :
  1. char *b = new char[2];
  2. strcpy(b, "6" );
  3. int a = (*((int *)b));
  4. cout << b << " - " << a << endl;


 
Mais au lieu d'afficher '6 - 6', il affiche '6 - 1108475958'.
En fait avec n'importe quel chiffre, il ajoute 1108475952.
 
Je dois donc taper 'int a = (*((int *)b)) - 1108475952;'
 
Mais c'est bizarre quand même, de plus j'ai pas trop compris l'instruction en elle-même.
En fait je crois (mais corrigez-moi) que :
 
1/ le 'char *' b est transformé en 'int *' avec ceci : '(int *)b)'
2/ l'entier a vaut ce qui est pointé par le 'int *' avec ceci : '*('
 
C'est bien ça ?


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Marsh Posté le 15-08-2002 à 17:12:56   

Reply

Marsh Posté le 15-08-2002 à 18:33:18    

:bounce:


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Marsh Posté le 15-08-2002 à 19:14:14    

juju_le_barbare a écrit a écrit :

Bonjour,
En fait je crois (mais corrigez-moi) que :
 
1/ le 'char *' b est transformé en 'int *' avec ceci : '(int *)b)'
2/ l'entier a vaut ce qui est pointé par le 'int *' avec ceci : '*('
 
C'est bien ça ?
 




Oui donc l'affichage est cohérent.

Reply

Marsh Posté le 15-08-2002 à 19:29:12    

Je vois pas très bien où est le problème.
a vaut l'entier pointé par le int *. C'est à dire que a vaut les 4 octets à cette adresse, interprétés comme un entier.

Reply

Marsh Posté le 15-08-2002 à 19:47:23    

mrbebert a écrit a écrit :

Je vois pas très bien où est le problème.
a vaut l'entier pointé par le int *. C'est à dire que a vaut les 4 octets à cette adresse, interprétés comme un entier.




 
d'accord !!!
excusez mon ignorance  :D


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Marsh Posté le 15-08-2002 à 20:12:41    

juju tu programmais en quel langage avant?
 
parce que la tu vas ramer pour le C,
je te conseille de prendre un bouquin serieux
style le langage C de Kernighan et Ritchie
qui va t'apprendre tout ce qu'il faut savoir sur le C.
 
LeGreg

Reply

Marsh Posté le 15-08-2002 à 21:12:10    

legreg a écrit a écrit :

juju tu programmais en quel langage avant?
 
parce que la tu vas ramer pour le C,
je te conseille de prendre un bouquin serieux
style le langage C de Kernighan et Ritchie
qui va t'apprendre tout ce qu'il faut savoir sur le C.
 
LeGreg




 
Bah dis tout de suite que je suis nul  :fou:  
Avant le C/C++ je faisais du Pascal.
ça fait depuis février 2002 que je fais du C/C++
J'ai acheté Un bouquin sur le C et un sur le C++, mais le petites subtilités telles celle-ci peuvent encore m'échapper si je n'y fais pas très attention (mais j'ai compris les explications que l'on m'a donné)
 
Si tu as du temps à perdre je peux t'envoyer (par mail) ce que je suis en train de faire depuis pas mal de temps ;)
 
++


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Marsh Posté le 16-08-2002 à 02:08:36    

Ecoute c'est un forum d'entraide,  
je ne suis pas la pour te dire que tu es nul ou que tu es un dieu
par contre, c'est un conseil que je te donnais
de continuer a potasser un bouquin serieux (style le langage C)
evidemment tu es libre de le suivre ou pas.
 
Sinon pour convertir un entier en char, ta methode ne peut pas marcher, essaie plutot avec atoi (dans stdlib).
 
A+
LeGreg

Reply

Marsh Posté le 16-08-2002 à 08:19:26    

legreg a écrit a écrit :

Ecoute c'est un forum d'entraide,  
je ne suis pas la pour te dire que tu es nul ou que tu es un dieu
par contre, c'est un conseil que je te donnais
de continuer a potasser un bouquin serieux (style le langage C)
evidemment tu es libre de le suivre ou pas.
 
Sinon pour convertir un entier en char, ta methode ne peut pas marcher, essaie plutot avec atoi (dans stdlib).
 
A+
LeGreg




 
 
salut,
 
tu aimes les extrêmes toi ;)
Nul ou Dieu ;)
 
 
Bref, je connais la fonction atoi(), ou même strtol(), mais si j'ai posé cette question c'est juste par curiosité, histoire de connaître un peu mieux les pointeurs.
J'ai vu à la FNAC un livre sérieux sur la programmation système en C sous Unix (c'est ce qui m'intéresse), écrit par Christophe Blaess (qui traduit des pages man, c'est pour ça que son nom me disait quelque chose), mais ce superbe livre coûte 46 ? !!!
 
Nop j'ai pas cette somme désolé, donc si quelqu'un connaît un livre eccellent sur la programmation en C, au format PDF par exemple, mais tééchargeable, qu'il me le dise !!!!!!!
J'ai moyen de l'imprimer (même si il fait 1000 pages comme le bouquin cité ci-dessus...)
 
Merci d'avance


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed