Hi, ich habe ein kleines Problem/Frage.
Ich will alle IP's in einem Netz mit der Subnetzmaske 255.255.255.0 herausfinden.
Dafür habe ich diesen Code in einer for-Schleife stehen.
Er kopiert meine IP und soll einen Pointer auf den letzten Byte holen (lastByte), damit ich den Gerätecode hochlaufen lasse.
Jetzt hat ein Freund gemeint, dass durch die Addition von 3, der Pointer um 12 Byte verschoben wird, weil der Typ int ist.
Aber ich denke, mit dem &-Operator habe ich ja eine Adresse und wenn ich diese um 3 erhöhe, dann müsste sie doch um 3 Byte höher sein.
Oder stimmt das wirklich, dass der Typ in dem Ausdruck &newIP noch vorhanden ist und ich damit einen kompletten int überspringe pro Inkrementierung?
Also ich frage mich warum das passiert, weil eigentlich dachte ich dass eine Adresse typlos ist, nicht umsonst kann ich zwischen Pointern hin und her casten (und kann damit auch Daten verlieren, wenn ich die Größe nicht mehr weiß).
|
C-/C++-Quelltext
|
1
2
|
unsigned int newIP = m_pCore->m_LocalIP;
unsigned char* lastByte = (unsigned char*)(&newIP + 3);
|