Pointer data types

Why does pointer's declaraction needs an identified data types? If its ok (what I'm currently thinking) if not? I have a feeling that it has many reasons but my brain hurts if I think of it.
Data type is needed that to perform the pointer arithmetic. For example what value will the pointer have after increment?

++p;

Or what will be the value of the difference of two poinetrs?

p - q
Also, without a type how would it know how much data to read when dereferencing?
Topic archived. No new replies allowed.