思勤无邪

上学时,因我年龄最小,个头也最小,上课时,就像大猩猩堆里的猴一般。如今,这猴偶尔也把最近的一些情况写在这里。

   :: 首页 :: 联系 :: 聚合  :: 管理
  132 Posts :: 1 Stories :: 178 Comments :: 0 Trackbacks

公告

     吾日常三省吾身,曰思、曰勤、曰无邪。

积分与排名

  • 积分 - 181276
  • 排名 - 142

最新随笔

最新评论

阅读排行榜

评论排行榜


对指针的认识:

    每个指针都有一个相关的类型。不同数据类型的指针之间的区别不是在指针的表示上,也不在指针所持有的值(地址)上——对所有类型的指针这两方面都是相同的。不同之处在于指针所指的对象的类型上。指针的类型可以指示编译器怎样解释特定地址上内存的内容,以及该内存区域应该跨越多少内存单元。当指针持有0值时,表明它没有指向任何对象。

    指针不能被初始化或赋值为其他类型对象的地址值。例如:不是说int类型的指针在物理上不能持有与double相关联内存的地址,它能够。但是不允许,因为虽然int型的指针和double型的指针能够持有同样的地址值,但对那块内存的存储布局和内容的解释却完全不同。

    当然,如果我们要做的仅仅是持有地址值(可能是把一个地址同另一个地址作比较),那么指针的实际类型就不重要了。C++提供了一种特殊的指针类型来支持这种需求:空(void*)类型指针,它可以被任何数据指针类型的地址值赋值(函数指针不能赋值给它)。

    void*表明相关的值是个地址,但该地址的对象类型不知道。我们不能够操作空类型指针所指向的对象,只能传送该地址值或将它与其他地址值作比较。

    指针可以让它的地址值增加或减少一个整数值,例如:加法指针加2意味着给指针持有的地址值增加了该类型两个对象的长度。

posted on 2006-08-10 09:56 思勤无邪 阅读(427) 评论(0)  编辑 收藏 引用 所属分类: C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理