个人理解:在32位机中,char占的是1字节,int占4字节,double8字节,为什么指向他们的指针全部都占4字节?,原因很简单,计算机中有三大总线,数据总线、控制总线、地址总线,而这里我们控制内存有多大(多大:指的是字节数有多少,计算机编址是以字节为单位的,所以一个单元格就是一字节)的就是地址总线。从最简单解析开始,地址总线为1是他控制的状态要么是1要么是0,只有这两种状态,当地址总线为2时就可以控制4种状态,以此类推,当地址总线为n时,则控制的状态就是2^n种状态,切记我们的编址都是从基点为0000…000开始编址的,所以,当地址总线为8时,我们的编址是从00000000~11111111,转化为10进制也就是0~255,这里我们就有一个公式如果地址总线为n,那么他的编址范围(以十进制表示)就是(0~2^n-1),这里的地址总线为8时,也就是说我们可以控制256种状态,一个状态是一个内存单元(一字节),编址是从00000000开始到11111111结束共256字节。我们知道我们的计算机有4位机,8位机,16位机,32位机,如今的64位机,就说32位:他的地址总线是32根,控制的状态是2^32种,等同于能够控制2^32字节(内存单元),前面说的为啥不同类型的指针变量都是占四字节就有了结果,因为32位机内存编址是32个0和1表示的二进制数,此时,我们把这些编址分成了4个字节(是刚好符合1字节等于8位),所以不同类型的指针变量都是占4个字节(相当于把32个数字(0和1)组成的门牌号给它用一个比较短的编号(字节)给表示了)。最后,char(1字节)、int(4字节)、double(8字节)这些类型都是占不一样的字节(内存单元),指针是如何把它们表示的?答:指针都是指向他们的第一个字节(内存单元),所以,指针变量名所占字节数都是4字节,而指针变量所占字节取决于这个指针指向的类型。