As Ken White explained, it is used only in 16-bit applications.
As a 16-bit pointer, 64 KB of memory can be addressed, memory segments are used to access more memory. A processor has four segment registers, so that it can simultaneously have four active segments, a code segment (cs), a data segment (ds), a stack segment (ss), and an additional segment (s). Each segment is 64 kb, but they can access the same memory area or overlap sides.
A nearest pointer is a 16-bit pointer inside the same segment. It is used as a pointer to data or code in the same module.
A far pointer is a 16 + 16-bit pointer consisting of a 16-bit segment offset and the nearest pointer. It is used as a pointer to data or code in another module. When you use the far pointer to call a procedure, part of the segment is placed in the cs and ds (IIRC) registers to access the code and data in this module.
The physical address of the segment + pointer pair is calculated as the segment pointer * 16+. This means that a 16-bit program can receive 1024 kbytes of memory. To access more memory, two extended and extended memory methods are used. (Also, to some extent, the high memory method, where the address did not wrap around the 1 MB barrier but using the FFFF segment offset, will give you direct access to 65520 bytes of extended memory.)
Guffa source share