***sizeof***的特点:
printf(”%d“,int*);
printf(”%d“,float*);
printf(”%d“,double*);
其结果为
4 4 4
这就是面试的时候问你,指针在内存中占多少个字节?
这就是个问题不是简单的2,4,甚至8个字节
回答:指针在内存中所在的字节数是由系统的寻址能力决定的,寻址能力就是CPU对于该数据范围处理的极限能力,理论上32位系统的寻址能力是2的32次(4GB,也就是现在的虚拟内存为4GB),也就是32bit,按照一个字节8bit来算就是4个字节。16位系统是2个字节,64位的就是8个字节。寻址能力是由系统的硬件决定的,也就是总线的位数。
简单的总结下,32位的4字节,16位的2字节,64位的8字节,由系统的寻址能力决定。