Wenn ich diesen Code ausführen:Druck Adressen von Variablen
uint8_t stackVar = 0;
void* ptr = &stackVar;
uint8_t& ref = reinterpret_cast<uint8_t&>(ptr);
std::cout << (void*)&ref << std::endl;
std::cout << ptr << std::endl;
std::cout << (void*)&stackVar << std::endl;
ich diese Ausgabe erhalten:
0x22fe30
0x22fe3f
0x22fe3f
Zumindest in meiner Einschätzung sollte ich die gleiche Nummer für alle drei dieser Aussagen erhalten. Was geht hier vor sich?
Sie machen Vermutungen darüber, wie Referenzen –
'& ref' ist die Adresse eines Verweises auf einen Zeiger umgesetzt werden. Warum sollten Sie erwarten, dass dies dem Zeiger selbst entspricht? –
Ich denke, das OP ist verwirrt, in dem & hat zwei Bedeutungen. Das '&' im ersten Cout bedeutet 'Address-Of', nicht 'Reference'. – PaulMcKenzie