- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
- Upwork知识库-百科全书.pdf
- VueJS官方离线文档(搬运版).pdf
- VueShop商城使用手册.pdf
- vue项目总结和前端学习笔记.pdf
- W3School Redis 教程 & 命令参考.pdf
- W3School 设计模式教程.pdf
- Web开发规范文档-10241735.pdf
- Web开发新人培训系列.pdf
- Web游戏支付平台.pdf
- Windows环境部署:IIS全能环境最佳实践.pdf
- 2025年拍卖师慈善拍卖项目整体策划与方案设计专题试卷及解析.pdf
- 2025年拍卖师从危机中寻找机遇的品牌重塑策略专题试卷及解析.pdf
- 2025年拍卖师房地产在建工程拍卖的成交确认专题试卷及解析.pdf
- 2025年拍卖师后疫情时代消费心理与投资偏好对拍卖市场的影响分析专题试卷及解析.pdf
- 2025年拍卖师激励性语言的文化适应性专题试卷及解析.pdf
- 2025年拍卖师拍卖纠纷处理中的心理学应用专题试卷及解析.pdf
- 2025企业人力资源劳动合同模板.docx
- 2025年拍卖师拍卖APP的用户体验与沟通设计专题试卷及解析.pdf
- 2025年拍卖师应对竞买人恶意串通与围标的控场策略专题试卷及解析.pdf
- 基于神经网络的混合气体检测分析系统.pdf
最近下载
- 人教版(2024)新教材小学三年级美术上册第三单元《爱集体爱劳动--传承中华美德》每节课精品教案汇编(含三个精品教案).doc
- 类风湿性关节炎临床路径.pdf
- 管综模拟卷(四)答案.pdf VIP
- 机器人切割设备操作工岗位职责说明.doc VIP
- Q-CR 562.4-2018-铁路隧道防排水材料 第4部分:排水盲管与检查井.pdf VIP
- 《培养小学生合作学习能力的研究》中期汇报材料.docx VIP
- 农业保险+期货介绍.pptx VIP
- 11《我们都是热心人》第2课时(课件)2025道德与法治三年级上册统编版.pptx
- 管综模拟卷(三)答案.pdf VIP
- 疾病控制中级(归纳总结)..doc VIP
原创力文档


文档评论(0)