2016-05-15 15 views
2

Ich versuche, den Wert der Daten durch einen const void Zeiger hingewiesen. Ich habe dieses einfache Beispiel geschrieben, um den anderen Weg zu bekommen. Aber aus irgendeinem Grund wird es nicht funktionieren. Eigentlich möchte ich die printf schreiben "Daten 5 und die Adresse des Zeigers" Kann mir bitte jemand helfen?Holen Sie sich den Inhalt einer const void

Dank

Hier ist der Code

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

int main(){ 
    const void * data; 
    int b = 5; 
    data = &b; 
    printf("data %d %p ",&data,&data); 
} 
+1

Wenn Sie Daten interpretieren möchten, müssen Sie seinen * Typ * kennen (und damit angeben). Verwenden Sie nicht "void". C verfügt nicht über einen integrierten Mechanismus zum Identifizieren des Datentyps außerhalb des statischen Systemtyps. –

+0

'printf (" Daten% d% p ", * (const int *) Daten, &data);' – BLUEPIXY

+0

Die "* (const int *)" vor den Daten lösen dies dank – kevin556

Antwort

5

data die Adresse b hält. Um diese Adresse mit %p auszudrucken, übergeben Sie einfach data. &data ist die Adresse data anstelle der Adresse b.

Um den Wert an dieser Adresse zu erhalten, müssen Sie data mit *data dereferenzieren. Aber da ist ein Fang. Sie können void Zeiger nicht dereferenzieren, da ihr Datentyp unbekannt ist. Um den Wert int an dieser Adresse zu erhalten, müssen Sie zuerst const void * auf const int * umwandeln. Dann können Sie das Ergebnis dereferenzieren.

printf("data %d %p\n", *(const int *) data, data); 
Verwandte Themen