A pointer is an object that points to a location in memory.
So the raw value of a pointer might be something like "00C33FF8" (which will change each time you run the program).
If you multiply a pointer with another pointer, you multiply the addresses together, not the value it points to. So, you will end up with some ambiguous memory address that points to garbage data or a memory address that doesn't belong to the program. The same goes for division. The main idea is, if you multiply or divide two pointers together, it's impossible to know what the result address will point to. So, as vlad has said, there would be no meaning to multiplication and division of pointers.
Adding and subtracting pointers is different, though. Pointing to sequential memory addresses is often useful (arrays).
Subtraction of two pointers gives a meaningful result: the offset of memory between two pointers. Addition will not give anything meaningful, so it is an invalid operation.