I might not do the best job explaining this in terms of a low level aspect, maybe somone could back me up, but when you take the sizeof the array in the main() it actually takes all 20 bytes (4 bytes per int) as the size of the array on the stack. In the main, the array is actually sitting on the stack, it is not a pointer to data elsewhere. When you call the function, all that happens however, is a pointer to the data on the stack in the main is push'ed. If you throw something like:

Code:

std::cout << (void*) &selectedArray;

In your Chair member function, then you will see it spit out an address like: 0012FED4. Which is the address of the stack on XP SP2 for me. I think it's much higher on *nix. Um, yeah, I think that's about it.