对指针占用字节大小的理解

最近因为找工作,所以就复习了一遍C语言。就把自己对指针的一些理解说下吧。

听到指针,第一反应就是地址。再多看点书就可以知道指针占的字节是4。一般的面试题上面也会出这样的题。楼主比较爱占牛角尖,为什么整形占的是4个字节,字符型占的是1个字节。而指针占的字节大小是4呢。如果换到51单片机或者MSP430上边,指针的字节大小还是4吗?

果断跑去翻阅了下好几本汇编的书。上边对指针比较具体的解释是指针是寄存器和内存字。说到寄存器,这时候肯定能想到寄存器在不同的操作平台上位数是不同的;内存字也是如此。例如在8086上我们知道,内存字就是16位的,而x86系统是32位的。这就很好的解释了为什么网上和书上那么多答案都说指针占得字节大小为4了。对于windos的平台,32位的操作系统,寄存器和内存器是32位的。所以就是4个字节;而换到其他的平台,得根据操作平台而定的。就和整形数据在不同平台的数据范围一样。

还有种更加直观的解释就是:指针是以内存地址作为变量地址。

当然网上许多朋友也对这个问题提出不同的看法。望轻喷!!

你可能感兴趣的:(Linux,C)