第1个回答 2011-08-28
虽然数据地址只占一个字节,但给指针分配的内存空间是4个字节。因此整型的单位就是4个字节。
第2个回答 2011-08-28
int *p=NULL
sizeof(*p) 查看*p的大小 是4个字节
搞错 不是sizeof(*p) 这个是int 的类型
应该是sizeof(p)
抱歉~
第3个回答 2011-08-28
某些情况下,指向成员函数的指针长达16字节。
说四字节,主要是一些指针寄存器是四字节的,但寻址可以同时用两个指针寄存器。
CPU地址线的数目也不一定与寄存器位数相等的。
所以16位8086按理说只能用64K内存但别人却可以直接寻址1MB内存。
同理32位系统使用8G内存也是可能的。
底层的细节与硬件设计与操作系统是有关的。
所以讨论指针是多少字节是没有意义的,你问编译器就知道了:sizeof(Pointer)。
不过呢,你想作优化就不得不考虑指针大小。但这个和硬件是无关的,一般只和编译器有关。有篇论文好像叫《C++实现的最快委托》就讨论这个问题,你可以去烟酒一下。
第4个回答 2011-08-28
在32为机器上的确是占用四个字节
第5个回答 2011-08-28
一个指针大小确实只有4个字节(某些机器上也不是),但是指针可寻址范围是0-(2^32-1)