Длина указателя не зависит от указываемого типа. Длина указателя - это правельно ты говоришь, "чтобы дотянуться" в огромной памяти. Для этого кроме типа при объявлении указателя пишут еще и ключ far, near, чтобы компилер знал cкока байт отводить под сам указатель. long * far x - это "под указатель отвести 3 байта, и прибавлять-убавлять указатель квантами по 4 байта".