[LCP] Interro n°2 : Les horaires du 3ème bimestre

Voir le sujet précédent Voir le sujet suivant Aller en bas

resolu [LCP] Interro n°2 : Les horaires du 3ème bimestre

Message  jabberwok le Ven 06 Jan 2012, 13:44

Bonjour/Bonsoir,

Je rencontre un problème lors du balayage de la zone mémoire :


La fonction dont le prototype est void * getSeqAttrib (int * adrInt) retourne, au
premier appel, l'adresse d'une des nombreuses séquences qu'il va falloir explorer pour
rassembler toutes les informations permettant de construire les horaires des groupes de 2ième
année, et place dans l'entier dont il faut donner l’adresse lors de l’appel, le nombre total de
séquences à explorer. Il est inutile d'appeler la fonction getSeqAttrib plus d'une fois car
elle retournera dès le deuxième appel l'adresse nulle.
La séquence dont l'adresse est retournée par la fonction ainsi que toutes les autres séquences à
explorer se configurent comme suit :
- le nombre d'éléments "attribution" (float) ;
- une zone "attributions" ;
- l'adresse du premier octet de la séquence suivante à explorer.

J'ai un problème pour récupérer l'adresse, ce que j'ai tenté :

Code:
ptr = (void *) *((int *) ptr);

ptr est le pointeur de ma zone, comme une adresse est codée sur 4 bytes, je la récupère en castant mon pointeur en int, puis je le re-cast en void * (sinon j'ai cette erreur là : "invalid conversion from 'int' to 'void*")

Est-ce que quelqu'un a une solution à mon petit problème ?

Merci d'avance.


Dernière édition par jabberwok le Ven 06 Jan 2012, 14:43, édité 1 fois

jabberwok

Nombre de messages : 90
Prénom : ali
Statut : Gediplomeerd =)
Date d'inscription : 27/09/2010

Revenir en haut Aller en bas

resolu Re: [LCP] Interro n°2 : Les horaires du 3ème bimestre

Message  smb le Ven 06 Jan 2012, 14:35

Pour obtenir ce vers quoi pointe un pointeur void (ptr dans ton cas), il faut d'abord le convertir en un pointeur vers le type de ce vers quoi il est censé pointer, et ensuite appliquer l'indirection !

On a donc la formule générale suivante :

* ( type * ) ptr

... en faisant ça, si le type est int, tu obtiens un int ...

... et si le type est void *, tu obtiens un void * ...

... donc, dans ton cas, tu remplaces type par void * , ce qui te permets d'obtenir l'adresse de la séquence suivante que tu replaces dans ton pointeur courant :

ptr = * (void * *) ptr ;

Simple, non ?




smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

resolu Re: [LCP] Interro n°2 : Les horaires du 3ème bimestre

Message  jabberwok le Ven 06 Jan 2012, 14:43

Fallait y penser ^^
Merci en tout cas ! =)

jabberwok

Nombre de messages : 90
Prénom : ali
Statut : Gediplomeerd =)
Date d'inscription : 27/09/2010

Revenir en haut Aller en bas

resolu Re: [LCP] Interro n°2 : Les horaires du 3ème bimestre

Message  Contenu sponsorisé Aujourd'hui à 10:49


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum