C / C++ Fonction avec void* en paramètre

Résolu/Fermé
Bilow Messages postés 1022 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 - 3 avril 2011 à 22:57
Bilow Messages postés 1022 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 - 4 avril 2011 à 21:36
Bonjour !

J'ai une fonction dont le prototype est :
int nombre(void*);
Dans le main(), je dois appeler cette fonction en lui faisant passer un 'int', qu'il me retournera.

int main(){
int a = 9;
int b = nombre( .. ); // b doit valoir 9
}
int nombre(void* data){
// Traitement de 'data'
return [le nombre recu];
}

Comment faire pour faire passer la variable 'a' vers la 'b', en passant par cette fonction ?
Merci !
A voir également:

2 réponses

Bilow Messages postés 1022 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
3 avril 2011 à 23:14
J'ai trouvé tout seul =D C'est plus bête que ce que je ne pensait...
Cet exemple n'est que très peu repris sur les autres forums, et encore moins en Français.

int main(){
int a = 9;
int b = nombre( (void*)a );
}
int nombre(void* data){
int retour = (int*)data;
return retour;
}

Par contre, j'ai un avertissement ...
[Warning] initialization makes integer from pointer without a cast 
Quelqu'un a-t-il une solution ?
Merci !
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
4 avril 2011 à 00:20
Je verrais plutôt :
int b=nombre(&a);

et int retour=*(int*)data;

C'est plus logique car void* est un pointeur et cela ne devrait pas générer de warning.

Cdlt,
0
Bilow Messages postés 1022 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
4 avril 2011 à 21:36
int main(){
    int a = 9;
    int b = nombre ( &a );
    // b vaut 9 !
}

int nombre(void* data){
    int retour = *(int*)data;
    return retour;
}

Merci beaucoup !! Ca fonctionne parfaitement, sans avertissement ! :)
1