Swapping addresses of pointers in C++
c++, pointers
Solution
If you want to swap the addresses that the pointers are pointing to, not just the values stored at that address, you'll need to pass the pointers by reference (or pointer to pointer).
#include <cassert>
void swap(int*& a, int*& b)
{
int* c = a;
a = b;
b = c;
}
int main()
{
int a, b;
int* pa = &a;
int* pb = &b;
swap(pa, pb);
assert(pa == &b); //pa now stores the address of b
assert(pb == &a); //pb now stores the address of a
}
Or you can use the STL swap function and pass it the pointers.
#include <algorithm>
std::swap(pa, pb);
Your question doesn't seem very clear, though.
Problem
How can one swap pointer addresses within a function with a signature? Let's say: ``` int weight, height; void swap(int* a, int* b); ``` So after going out of this function the addresses of the actual parameters (`weight` and `height`) would be changed. Is it possible at all?