C++ Dereferenzierung eines void-Zeiger , der Umwandlung von int ptr zu void-ptr

Diese Codezeilen zeigen folgende Fehlermeldung:

int e = 5, * ePtr = &e;
void * vPtr = ePtr; 
cout << *vPtr; 

syntax error :

`void*' ist nicht ein Zeiger-auf-Objekt-Typ

Weiß ich:

  1. jedem Zeiger-Typ gespeichert werden kann, in void-pointer-Typ auch ohne expliziten cast
  2. dereferenzieren Versuch der void-Zeiger ist ein syntax-Fehler

aber wenn wir nicht tun, Punkt 2, was ist die Verwendung von Punkt # 1, außer syntaktisch korrekt? Will ich drucken 5 (d.h. e hier) mit vPtr..ist das möglich?

Dieser gut funktioniert:

int e = 5, * ePtr = &e;
void * vPtr = ePtr; //specific to generic Ok!
double * dPtr = (double *)vPtr; //to let compiler know stoarge size
cout << *dPtr; //indirectly it is vPtr i.e. a void ptr, can be deref only if cast
void * verwendet wird, so ziemlich ausschließlich für die Speicherung beliebiger Zeiger, so können Sie werfen es zurück auf die richtige Art und Nutzung. Und es ist viel mehr eine C-Stil der Codierung.
versuchen Sie es mit casting void * vPtr = (void*)ePtr;
Sie suchen backticks: `void *vPtr = (void*)ePtr;`

InformationsquelleAutor ShivaniDhanked | 2013-05-30

Schreibe einen Kommentar