深度探索C++对象模型笔记《指针的类型》

一个指针,不管它指向哪一种数据类型,指针本身所需的内存大小是固定的,即4个字节。

class Z{
   //......
};
class X: public Z{
  //......
};

那么X* Px; Z *Pz; int* Pi;又有何不同呢?
以内存需求的观点来说,没有什么不同!它们三个都需要有足够的内存来放置一个机器地址(通常是个word,译注)。“指向不同类型之各指针”间的差异,既不在其指针表示法不同,也不在其内容(代表一个地址)不同,而是在其所寻址出来的object类型不同.也就是说,“指针类型”会教导编译器如何解释某个特定地址中的内存内容及其大小:

   那么,一个指向地址1000而类型为void*的指针,空间呢?是的,我们不知道!这就是为什么一个类型为void*的指针只能含有一个地址,而不能够通过它操作所指之object的缘故.所以,转型(cast )其实是一种编译器指令。大部分情况下它并不改变一个指针所含的真正地址,它只影响“被指出之内存的大小和其内容”的解释方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值