A pointer must be able to hold the address of any location in memory.As a result, a 32 bit system (usually) needs a 32 bit pointer!
Note the "usually" here, as member function pointers can be completely different in size and there are many other exceptions to this rule of thumb. If in doubt, or it matters a lot, write a quick program to check on the architecture you're targeting.