第10章 指针(一) 内存地址单元
声明:文中观点仅代表个人,其中文字、图片未经本人许可,不得部分或全部转载,违者所造成影响后后果自负!联系本人方式:80368704@qq.com QQ:80368704
10.1 内存单元地址我们每个人,在不断的成长,无论何时,都在不断的学习着,通过书本,通过师傅,通过失败,我们不断的总结着,不断的整理着自己的知识,使其系统化,理论化,以便能解决更多复杂的问题。但是具有这样条理清晰,结构完整的学识,我们经过了若干年,学习了若干代人的经验,经过了若干次的实践,一切的一切都是那么来之不易。从最初的一点点皮毛接触(感性认识),到完备知识体系的建立(理性认识),我们再把这些知识传授给其他人,哪里是一天两天可以教会他们的呀。指针是C语言博大精深之处,认识它,其实是在进军操作系统核心部分;指针是C之所以被称为中级语言的重要原因之一,它继承了汇编语言的内存单元的直接和间接访问的手段,使我们用高级语言编写的程序的效率大幅提高。指针的用途和优点是多多的,但是指针对不熟悉系统工作原理,尤其是对存储器原理不清楚的人,是不容易掌握的,因此我们对指针的讲解从内存的工作原理讲起。 在我们的计算机中,主要的内存叫做RAM(Random Access Memory),即随机存取存储器,在计算机的基础课中我们就了解到,RAM的主要作用是存储程序代码和数据供CPU在需要的时候调用。RAM对于系统性能的影响是每个PC用户都非常清楚的,那么它是如何实现程序和数据的存取的呢? 程序和数据的存取,并不是像堆放山药蛋那样简单,而是更像是超市存包处用箱格子存放物品一样,不但要放进去,还要能在需要的时候准确的取出来。 1 2 3 4 5 6 7 。。。。。。。。。。。。。。。。。。。。。。。。。。。9999 ▼▼▼▼▼▼▼ ▼ = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 上面的示意图中的小园点代表RAM中的储物箱,每一个圆点是一个小箱,,每个小箱有一个唯一的编号。计算机术语把一个小箱子称为一个字节.RAM就是由许多字节组成的,如上图中小圆点组成的细线。这里每个字节的编号是数字的,编号从0开始,即第一个字节的编号是0,依次第2个字节的编号是1,其后是2,3,4,5,6.............直到最后一个字节,当整个内存共有100个字节,最后一个字节的编号就是99;而当我们的内存共有10000个字节时,最后一个字节的编号就是9999了。一般的,我们称这个编号为该字节的地址编号,简称地址。 上面的内容,貌似原理,你仔细看看,其实很简单的哩,你把CPU和RAM当作两个人,CPU是存取包裹的人,RAM是存包处的管理员!具体举例:设包裹名为50,箱格子的号是2000,如下: 如果CPU要想从RAM那里取(包),而且现在包被存在(箱号)为2000的(箱)中,这时CPU首先需要向RAM提供(箱号)即2000,以便RAM定位待取的(包)50,然后等待若干个时间单位之后,RAM就会根据(箱号)2000定位到(包)50,并把(包)50交给CPU。我们现实生活中的超市存包处,一个箱格子是只放一个包的,哈,于是取包的过程可以用下图表示: 地址 2000▼ RAM CPU = = =.......= = = = = = = = = = = =........ = = = = = = = = || || <←←<←←2000 || || ||........................50................................|| || || || || 50 >→→>→→ > || || = = =.......= = = = = = = = = = = =........ = = = = = = = = 超市存包处被划分为许多格子,每个格为最小的单位,一个格存一个包,如果你一个人有3个包,那么就给你3个格子哦;我们把一个格子称为一个存包单元。 回到计算机中,如果CPU想要从RAM中调用的(数据),存放在(地址编号)为2000的(字节)中,这时CPU它首先需要向RAM提供(地址)即2000,以便RAM定位待存取的(数据)50,然后等待若干个时间单位之后,RAM就会根据(地址)2000定位到(数据)50,并把(数据)50交给CPU。 前面我们已经提到,作为内存的RAM是以字节为最小单位的,你的数据如果1个字节放不下,可以给你2个字节或更多嘛,如此而已。类似存包处把每个格子称为存包单元,我们把每个字节称为内存中数据存取的单元,简称为内存单元。每个内存单元的地址编号,简称为内存单元地址。 哈!一切的一切就是如此的简单,你,对指针的理解,已经有了一个胜利的开始,衷心的祝贺你,我的朋友! |
作者:
RDIF
出处:
http://www.cnblogs.com/huyong/
Email:
406590790@qq.com
QQ:
406590790
微信:
13005007127(同手机号)
框架官网:
http://www.guosisoft.com/
http://www.rdiframework.net/
框架其他博客:
http://blog.csdn.net/chinahuyong
http://www.cnblogs.com/huyong
国思RDIF开发框架
,
给用户和开发者最佳的.Net框架平台方案,为企业快速构建跨平台、企业级的应用提供强大支持。
关于作者:系统架构师、信息系统项目管理师、DBA。专注于微软平台项目架构、管理和企业解决方案,多年项目开发与管理经验,曾多次组织并开发多个大型项目,在面向对象、面向服务以及数据库领域有一定的造诣。现主要从事基于
RDIF
框架的技术开发、咨询工作,主要服务于金融、医疗卫生、铁路、电信、物流、物联网、制造、零售等行业。
如有问题或建议,请多多赐教!
本文版权归作者和CNBLOGS博客共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过微信、邮箱、QQ等联系我,非常感谢。