Wie kann ich richtig mit einem void-Zeiger in C?

Kann mir jemand erklären, warum bekomme ich nicht den Wert der variable, aber seine Erinnerung statt?

Brauche ich für nichtig zu verwenden* zeigen Sie auf "unsigned short" Werte.

So wie ich das verstehe void-Zeiger, deren Größe unbekannt ist und deren Typ unbekannt ist.
Einmal initialisieren Sie jedoch, Sie sind dafür bekannt, richtig?

Warum funktioniert meine printf-Anweisung drucken der falsche Wert?

#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;
}

Die Ausgabe bekomme ich:

res = 30
b =30
result = 30
res = 90
b =90
result = 44974
die printf redest du?
Welche Werte erwarten Sie, und was tun Sie tatsächlich?
Es scheint zu funktionieren hier, Punkt aus, was ungewöhnlich ist und es könnte dir besser helfen.
Ich denke, dass Sie vielleicht ein bisschen wackelig auf den Zeiger. Vielleicht hilft: beej.us/guide/bgc/output/html/multipage/pointers.html

InformationsquelleAutor user900785 | 2011-12-09

Schreibe einen Kommentar