Back in the old days (of 16-bit IBM PCs) you had "near pointers" "far pointers" and "huge pointers".
'near' pointers were 16 bits, and could address up to 64k, but only in one block of memory - usually in the data or code segments.
'far' pointers were 32-bits, but could address 64k anywhere in 1MB of memory
'huge' pointers were 32-bits, very inefficient, but could address anywhere in 1MB of memory.
C compilers would compile almost anything without warnings, as they had to run on CPUs that might be 4.77MHz, and fit into only a few hundred kb of RAM.
Programmers learnt fast or died young back then. Ah, the good old days...
Explain Near Far Huge pointers in C language