面向指针编程.pdfVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目 录 前言 指针是什么 ? 内存空间的有名与无名 栈与堆 数据的抽象 数据再抽象 山重水复疑无路 面向什么 ,可能就会失去未面向的那些 对象的回归 将函数变成数据 代码简化的基本原则 回避 C 指针是要付出代价的 C 程序猿的指针信条 本文档使用 看云 构建 - 2 - 前言 前言 原文出处 :http///a/1190000004200708 作者 :garfileo 面向对象编程 ,面向设计模式编程 (亦即设计模式 ),面向接口编程 ,面向模板编程 (亦即泛型编程 ), 面向函数编程 (亦即函数式编程 ),面向多核时代的并行编程 ,面向大数据的机器学习编程……这么多 年 ,大家要面向的东西已经够多了 ,然而我看到的现象是 ,很多编程语言让大家面向 xxx 的同时在竭力回 避指针。我可不想面向这么多东西 ,所以我只好加入指针的黑暗势力。我要不自量力的来写一篇 《面向指 针编程》作为投名状 ,借以表示我与软件世界的光明势力的彻底决裂。 这个世界上 ,提供指针的编程语言很少 ,这样的语言有汇编语言、C/C++ 以及 Pascal 等。Pascal 我没学 过。汇编语言过于黑暗 ,我现在功力还不足以驾驭它。C++ ,我觉得它简直是黑暗势力中的败类——它试 图挣脱指针 ,走向光明 ,结果却出了一堆幺蛾子。所以我还是俗套的选 C 语言来阐述指针的黑暗力量。 阅读本文之前 ,请读三遍 Unix 无名师说的话 :当尊者 Ritchie 发明 C 时 ,他将程序员放到缓冲溢出、堆 损坏和烂指针 bug 的地狱中惩罚。然后自我安慰一下 ,如果地狱未能使我屈服 ,那么我会比地狱更黑暗 更强大。 本文档使用 看云 构建 - 3 - 指针是什么 ? 指针是什么 ? 指针是什么 ? 内存是以字节为单位的一个很大但是又经常不够用的空间。指针是内存中 x 个连续的字节中存储的数据 ——在 32 位的机器上 ,x 的值为 4 ;在 64 位机器上 ,x 值为 8。为了叙述的简便 ,本文只在 64 位的机 器上谈论指针。 指针是一种数据 ,这没什么稀奇的。从机器的角度来看 ,程序的一切是存放在数组中的数据。只有那些自 作多情的程序猿才会像亚里士多德一样自作多情的认为程序是由对象 + 方法或者许多函数复合而成的。事 实上 ,从最远离机器的 Lisp 语言的角度来看 ,程序的一切也都是数据 ,存放在表中的数据。如果忽视程 序本身就是数据这个客观事实 ,程序猿们很容易就走上了形而上学的道路 ,然后他们会度过漫长的、罪恶 的、痛苦的中世纪 ,膜拜着一个又一个神棍 ,当然期间也出现了几位圣·奥古斯丁。 那么 ,指针中存储着什么数据 ?内存地址。 内存是以字节为单位的空间 ,其中每个字节都伴随着一个地址 ,这个地址机器赋予的 ,并不是我们的程序 编制的。你可以将整个内存空间想象成一栋大楼 ,将字节想象为大楼中每个房间 ,将每个字节的地址想象 为房间的门牌号 ,于是指针中存储的数据就类似于门牌号。 如果你从未学过 C 语言 ,读到此处可能会问 ,我们为什么要在内存中存储内存地址 ?不知你是否住过宾 馆。在正规的宾馆里 ,每个房间的门后都会贴着逃生路线图 ,图中 『存储』了该宾馆与你的房间同一楼层 内的全部房间的门牌号以及它们的布局。如果你住酒店时从来也不看逃生路线图 ,那么从现在开始 ,入住 酒店后第一件事就是认真的看一下它 ,关键时刻它能救你一命。在内存中存储内存地址 ,虽然不是救你性 命的 ,但是可以藉此构造与宾馆逃生路线图相似的抽象事物——内存数据的抽象与复合。 本文档使用 看云 构建 - 4 - 指针是什么 ? 本文档使用 看云 构建 - 5 - 内存空间的有名与无名 内存空间的有名与无名 内存空间的有名与无名 现在来看两行 C 代码 : int foo 10; int *b

文档评论(0)

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

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

1亿VIP精品文档

相关文档