Comment puis-je utiliser correctement un pointeur void en C?

Quelqu'un peut m'expliquer pourquoi je ne reçois pas la valeur de la variable, mais sa mémoire à la place?

J'ai besoin d'utiliser void* à point "unsigned short" valeurs.

Que je comprends vide pointeurs, leur taille est inconnue et leur type est inconnu.

Une fois les initialiser cependant, ils sont connus, non?

Pourquoi mon instruction printf imprimer la valeur faux?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void func(int a,  void *res){
    res = &a;
    printf("res = %d\n", *(int*)res);
    int b;
    b = * (int *) res;
    printf("b =%d\n", b);
}


int main (int argc, char* argv[])
{
    //trial 1
    int a = 30;
    void *res = (int *)a;
    func(a, res);
    printf("result = %d\n", (int)res);
    //trial 2
    unsigned short i = 90;
    res = &i;
    func(i, res);
    printf("result = %d\n", (unsigned short)res);
    return 0;
}

La sortie j'obtiens:

res = 30
b =30
result = 30
res = 90
b =90
result = 44974
qui printf parlez-vous?
Quelles sont les valeurs que vous attendez-vous, et que faites-vous réellement obtenir?
Il semble que cela fonctionne ici Point de ce qui est inhabituel et il pourrait faire de mieux vous aider.
Je pense que vous avez peut-être un peu fragile sur les pointeurs. Peut-être que ce sera vous aider: beej.us/guide/bgc/output/html/multipage/pointers.html

OriginalL'auteur user900785 | 2011-12-09