Я хочу поменять местами две локальные переменные, используя xor algorithm, однако это не позволит мне изменить адрес переменных. Если я создаю указатели на переменные, это позволит, но можно ли это сделать без использования указателей?Изменение адреса локальной переменной
Я пытаюсь сделать это
Point a = Point();
Point b = Point(1,1);
&a ^= &b;
&b ^= &a;
&a ^= &b;
Это ближе всего я был в состоянии добраться до того, что я хочу сделать
Point a = Point();
Point b = Point(1,1);
Point *a_ptr = &a;
Point *b_ptr = &b;
a_ptr = (Point *)(((unsigned long)a_ptr)^(unsigned long)b_ptr);
b_ptr = (Point *)(((unsigned long)a_ptr)^(unsigned long)b_ptr);
b_ptr = (Point *)(((unsigned long)a_ptr)^(unsigned long)b_ptr);
// The pointers are switched, but this will not work
&a = a_ptr;
Почему вы хотите обменять таким образом – aaronman
@aaronman - Нет особых причин. Просто интересно, возможно ли это. –
Вы просто не можете переназначить адрес переменной. Нет причин, по которым я это поддерживаю. – chris