指针自我修养.pdfVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
指针的自我修养 妮露她爸 指针的知识点较多,在各种类型的教科书中往往会将这些知识点划分为不同的小节进行讲解。比如, 先概述什么是指针变量,继而阐述什么是指针常量,接着引入指针的指针 等等。虽然这个流程符合官方标 准,但是往往给初学者造成的后遗症就是:学完了指针,却无法把指针的知识点串连起来,看书的时候觉 得书上讲的都对,但是自己写程序时却检查不出到底错在哪里。 基于上述初学者对指针学习过程中碰到的不适症状,本文将着力打造一篇以独到的视角学习分析指针的随 笔。专治“了解指针,但又不甚理解指针的特定人群。” 如果你从未接触学习过指针,那么请先看官方推 荐的C语言教程,然后再来观赏本文,以此达到曲线治疗的目的。好啦,废话不多说,让我们正式开始吧: 我们的讲解将从一个被广为流传的程序片段开始,程序片段如下所示: 这个程序片段在很多教课书中不只一次的出现过,要正真理解它,咱们还得从内存空间的分配上开始 讲起。很多哥们看到这句话的时候就开始纳闷儿了:这说的什么跟什么呀,说着指针怎么就扯到内存空间 上去了。好,那么下面我们就仔细来分析一下这句话的含义(这个分析的过程将是一个“源远流长”的故 事):想必大家对这个赋值语句:int a = 24 绝对不会感到任何的难度。那么我们来看看在这个简单的赋 值语句背后发生了一个怎样的过程呢? 这条赋值语句的功能很简单,将整型值常量24存储在整型变量a中。很好,那么大家再细细地想一下: 存储的前提条件是什么,当然是先要开辟空间喽(嘿嘿,自问自答了),比如你要在超市里存放包裹,超 市的物品储藏柜肯定要为你开辟一个储物空间。那么问题来了,如果整型值常量24需要占据两个字节的空 间,那么这个空间是在哪里开辟的呢(当然不是在储物柜上喽,对吧)。有的哥们笑了:这不有变量a嘛, 整型常量值24不就存储在变量a中嘛。 听到如此有理的反驳,我竟无言以对。我不禁想起小时候看到过的一个故事:有个财主为了考验儿子 是否知晓生活的疾苦(当然我一直怀疑是否存在过有情操如此亲民的财主),在吃饭的时候问儿子碗里的米 饭是哪儿来的,儿子不假思索:这还用问,当然是佣人从咱家的粮仓里拿出来的! 和碗里的米饭一样,程序中的存储空间也不是凭空产生的,而是从计算机的内存中拿的。当一个程序 代码编译后就被载入了内存,程序运行过程中数据的存储都将在内存中进行。内存这个玩意人如其名,自 然是用来存储东西的。大家完全可以把内存想象成是一个具有许许多多单元格的储物柜,每个单元格都标 有独一无二的记号,在计算机术语中这个“记号”被称为“地址”。内存中的每一个地址对应着一个存储 空间。有了存储空间一切都好办了。在商场存包时,我就可以把物品存储在编号为44的储物单元格里,有 的顾客喜欢吉利的数字,也可以把物品存储在编号为66或者88的储物单元格里。看到这儿有哥们就说了, 我懂妮露她爸的意思了。妮露她爸的意思是想说:在计算机编程中,对于常量值的存储和商场中存放物品 的道理是一样一样的。程序员在内存中找个固定的地址,然后将常量值24放到这个地址所对应的存储空间 中就OK了。如果您这么想的话,那么有个问题不得不问问您:您在写代码的时候有碰到过需要确定内存中 的地址编号的情况吗?有的哥们在看这篇文章的之前恐怕还不知道内存中还有地址编号这档子事儿吧。相 信大家要存储一个常量(如:整型常量值)无非就是使用如下的方式: int 整型变量名 = 整型常量值; 咱把它写的具体点儿就是:int a = 24 ; 有的哥们沉不住气了,刚才还在讲内存中的地址,怎么突然扯到变量了。其实,内存中的地址和变量 名之间的关系几句话就可以说清楚啦:内存中的每个位置由一个独一无二的地址标识,计算机硬件永远是 通过这些地址标识来访问内存中的各个地址(计算机可不鸟你什么变量不变量的,在它们的眼中就只有地 址,你要在内存中存储数值是吧?好,等等,我给你找到个编号为XXX的地址,你就把数值放在该地址对应 的存储单元中吧;啥?你现在要使用刚才存储的那个数值?行,稍等,我去找编号为XXX的地址然后把里面 存的数据给你取出来),换句话说,如果你真的牛逼到能够记住计算机中内存的所有用户合法存储空间, 你就可以抛开变量,直接将数据存储到任何一个合法空间中(当然,不同型号的计算机内存用户空间也不 相同,要完成这个任务几乎是不可能

您可能关注的文档

文档评论(0)

xuefei111 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档