struct XYZ {
    XYZ *adress;
};
XYZ *Ex;
int main() {
    Ex = new XYZ[3];
    Ex->adress = (++Ex);
    cout << Ex->adress << endl;
    Ex->adress = (++Ex);
    cout << Ex->adress << endl;
    Ex->adress = (--Ex)->adress;
    cout << Ex->adress << endl;    
Output:
0105E424 0105E428 0105E424
struct XYZ {
    XYZ *adress;
};
XYZ *Ex;
void copy_adress(XYZ *Ex) {
    Ex->adress = (++Ex);
}
int main() {
    Ex = new XYZ[3];
    copy_adress(Ex);
    cout << Ex->adress << endl;
    Ex->adress = (++Ex);
    cout << Ex->adress << endl;
    Ex->adress = (--Ex)->adress;
    cout << Ex->adress << endl;
Output:
CDCDCDCD 00A3E53C CDCDCDCD
Can you tell me why this is happening, and how I can fix it?
 
     
     
    