

Still, microcontrollers with 8-bit data busses and larger address spaces (perhaps only for code and not data) are common. As a consequence you get additional weird limitations such as linked lists being able to hold more items than an array can. These are complicated to manage and cause proliferation of pointer-like types (near pointer, far pointer, based pointer).

If your CPU can't do arithmetic on something the size of a pointer, your address has to be split across multiple variables, which results in a segmented or banked address space. Still, there are some relationships between pointer size and "word" size. They don't have to be the same, and the number of computer systems where they aren't vastly outnumbers the ones where they are.
