Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
retour pointeur en *C (a toi Sve@r)
Envoyé par: oliv

Voici mon code

main ()
{
/* Zone de declaration des variable programme */

float var1=1; /*initialisation de var1*/
char *pt; /*declaration de la variable qui servira de pointeur*/
int i; /*declaration de la variable d'increment*/

/* zone corp de programme */

pt=(char*)&var1;

printf("\n");
printf("-------------lancement programme-------------------\n");
printf("\n");
printf("adresse memoire de var1 =%p\n", &var1 );
printf("\n");

for (i=0; i<sizeof(var1); i++)
{
printf("octet memoire %d=%p a la valeur %x\n", i , pt + i , *(pt+i) );
}
printf("\n");
printf("-------------fin de programme-----------------------\n");
printf("\n");
}

Je desir lire les quatre valeurs, individuellement, des quatre octets qui composent la variable "var1", et cela en hexadecimal.

Ici var1=1 et je recupere la chose suivante.

-------------lancement programme-------------------

adresse memoire de var1 =0xbffff6a4

octet memoire 0=0xbffff6a4 a la valeur 0
octet memoire 1=0xbffff6a5 a la valeur 0
octet memoire 2=0xbffff6a6 a la valeur ffffff80
octet memoire 3=0xbffff6a7 a la valeur 3f

-------------fin de programme-----------------------

La je reste sans voix pour se qui conserne la valeur de 0xbffff6a6.

Merci pour le coup de main,

A+

PS:Je compte sur toi Sve@rdeye rolling smiley


Il n'y a de dieu que DIEU, et Mouhammed est le messager de DIEU.

Poste le Thursday 28 April 2005 17:13:11
Répondre     Citer    
Re: retour pointeur en *C (a toi Sve@r)
Envoyé par: ceric35

J'ai la reponse , mais si tu veut que ce soit Sve@r , ok :-))

-------------------------------------------------------------------------------------------------
Linux est pour la firme de Redmond ce qu'est James Bond pour les
méchants dans les films : le dernier obstacle avant la domination mondiale.

Poste le Thursday 28 April 2005 17:20:38
Répondre     Citer    
Re: retour pointeur en *C (a toi Sve@r)
Envoyé par: oliv

Aller ne me fait par languir, je suis sur ce probleme depuis le debut de l'apres-midi.


Il n'y a de dieu que DIEU, et Mouhammed est le messager de DIEU.

Poste le Thursday 28 April 2005 17:39:17
Répondre     Citer    
Re: retour pointeur en *C (a toi Sve@r)
Envoyé par: ceric35

Je comprend pas trop ce que fait le programme en fait , mais bon !

deja , un pointeur sur un float est un float* ?-(
float *pt; /*declaration de la variable qui servira de pointeur*/

Apres :
printf("octet memoire %d=%p a la valeur %f\n", i , pt + i , *(pt+i * sizeof(flaot)));


Citation

./main

-------------lancement programme-------------------

adresse memoire de var1 =0xbffff474

octet memoire 0=0xbffff474 a la valeur 1.000000
octet memoire 1=0xbffff478 a la valeur -1.999665
octet memoire 2=0xbffff47c a la valeur 0.000000
octet memoire 3=0xbffff480 a la valeur -0.000028

-------------fin de programme-----------------------

var1 a bien la valeur 1 , mais pourquoi fait tu une boucle
sizeof(var1) = 4 , c'est logique !

Mais *(pt+i * sizeof(flaot)) a partir de i=1 donne
des valeur incoherentes c'est normal car elle ne sont pas initialisées ...

-------------------------------------------------------------------------------------------------
Linux est pour la firme de Redmond ce qu'est James Bond pour les
méchants dans les films : le dernier obstacle avant la domination mondiale.

Poste le Thursday 28 April 2005 17:46:29
Répondre     Citer    
Re: retour pointeur en *C (a toi Sve@r)
Envoyé par: oliv

But de mon programme:
-la variable var1 est de type "float", donc la valeur numerique qui lui est attribue et code sur 4 octets.
pour exemple si var1=25 la valeur qui doit etre stocker en memoire est 00011001(en binaire) et 19 (en hexadecimal).Donc physiquement dans le PC on aura: 0000 0000 0001 1001 (4octets)
-mon souhait est de pour voir retrouver ce resultat via un programme (et pour une plus grande souplesse de compreention je cherche a afficher le resulta en hexadecimal)
Je constate donc, que cela ne marche pas non plus cher toi.
J'espere etre parvenu a rendre plus claire mes intention.
Donc si quelqu'un a une solution il est le bien venu.

Il n'y a de dieu que DIEU, et Mouhammed est le messager de DIEU.

Poste le Thursday 28 April 2005 18:15:40
Répondre     Citer    
Re: retour pointeur en *C (a toi Sve@r)
Envoyé par: ceric35

haaaaaaaaaaaaaaaaaa , ok , je regardes :-))

-------------------------------------------------------------------------------------------------
Linux est pour la firme de Redmond ce qu'est James Bond pour les
méchants dans les films : le dernier obstacle avant la domination mondiale.

Poste le Thursday 28 April 2005 18:22:04
Répondre     Citer    
Re: retour pointeur en *C (a toi Sve@r)
Envoyé par: ceric35

Je me tue dessus , mais je me souvient tou a coup de mais court d'architecture :-))

25 = 00011001 , ca ok ;-)

0000 0000 0001 1001 , ca par contre non !!!

les float ne sont pas representes comme ca en interne !!!



Sur 32 bits :
- 1 bit pour le signe
- 8 bits pour coder l'exposant en excedent à 127
- 23 bit pour la mantisse

Exemple (codage de 1/3) : 0011111010101010101010101010101010

^^D-*



-------------------------------------------------------------------------------------------------
Linux est pour la firme de Redmond ce qu'est James Bond pour les
méchants dans les films : le dernier obstacle avant la domination mondiale.

Poste le Thursday 28 April 2005 19:13:08
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
retour pointeur en *C (a toi Sve@r)
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons