3 Stimmen

Referenzierungsproblem in einem void *-Zeiger?

Dieser Code:

int p = 10;
void *q;
*q = 10;

Lässt sich nicht kompilieren:

'=' : kann nicht von 'int' nach 'void *' konvertieren

Dieser Code lässt sich jedoch problemlos kompilieren:

int p = 10;
void *q;
q = &p;

Was ist der Grund dafür?

0 Stimmen

Fehler. Welcher Fehler? (In diesem Fall ist es ein bisschen offensichtlich, aber Sie sollten immer den Fehler angeben).

0 Stimmen

'=' : kann nicht von 'int' nach 'void *' konvertieren

0 Stimmen

Ihr Compiler ist seltsam ... was würde er konvertieren wollen von int a void* angesichts der Aussage *q=10; ? ??? In dieser Erklärung wird die 10 hat Typ int und die *q hat Typ void .

0voto

ThiefMaster Punkte 297146

Sie können einen void-Zeiger nicht dereferenzieren. Und selbst wenn Sie es könnten, würde Ihr Code in eine zufällige Speicheradresse schreiben und wahrscheinlich abstürzen.

Im zweiten Codeblock weisen Sie die Adresse des Zeigers zu, was gut funktioniert, da Sie jede beliebige Speicheradresse einem Zeiger zuweisen können. void*

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X