If your program needs more than 64K for code or data, at least some of the pointers must specify the memory segment, which means these pointers occupy 32 bits instead of 16 bits.
These larger 32-bit pointers that can point anywhere in memory are called “far pointers.” Accessing a far object is called “far addressing.”
Summary: Far pointers can address any location, but they are bigger and slower.
Far addressing has the advantage that your program can address any available memory location—up to 640K in DOS. The disadvantages of the larger far pointers is that they take up more memory (four bytes instead of two) and that any use of the pointers (assigning, modifying, or otherwise accessing values) takes more time.
Allowing either code or data to expand beyond 64K makes your programs larger and slower.