楼上正解。
楼主可以把每个内存单元看做一个个紧挨着的空盒子(每个空盒子没有任何不同),为了从某个盒子里将某个东东(比如int型或字符型数据)取出,或将某东东放到某个指定的盒子里,系统给每个空盒子编了个号(这个号就是该盒子的地址)。如果用十进制表示话,从0000,0001,0002,。。。9999.这就是一千个编号,也是一千个地址,每个地址占四位。
而每种数据类型的长度是不同的,换句话说,很可能一个盒子是装不下的。所以用连续几个编号挨着的盒子放一个数据的情况时有发生,以这连续的几个盒子编号最小的那个盒子的编号做为这个数据所在地址的编号。也就是说不管什么数据类型的变量,它所在的地址的编号都是用四位就可以表示。
而计算机里面用二进制代替十进制,一个地址的长度是固定的,说用n位表示,都用n位表示。表示的是从0到2的n次方这么多的地址。指针变量存放的就是一个编号,也就是一个地址。所以它的长度当然是固定的。