A pointer is a variable that holds a memory address, so on a 64 bit system it will be 8 bytes, on a 32 bit system it will be 4 bytes.
There aren't any exceptions - If I have an object that is say 500bytes and my system is 64 bit, then the pointer to the object will have a size of 8 bytes. The pointer points to the first memory address of the object.
If I have a variable that is an int, the pointer to it will have size 8 bytes, and points to the memory address of the int.
In my struct example above, the same thing applies to classes. If I had a class that contained 9 ints and 1 double, then the size would be 10 * sizeof double, not 9 * sizeof int + sizeof double.