首页  >   经验  >   C++语言零基础入门教程:4.14 指针和内存地址的关系分析

C++语言零基础入门教程:4.14 指针和内存地址的关系分析

查看 codexia 的博客 2017-05-08 22:55:12 1353 会员文章,禁止转载
C++   入门  
手机阅读 | 转发赚积分
手机收藏 | 分享给好友
简介内存地址是计算机资源分配中至关重要的一部分。指针是访问和操作内存地址的,所以指针是踩在法律的边缘的,一方面可以很强大,另一方面,也很容易犯错。一旦犯错,就会被系统惩罚。
    在《C++语言零基础入门教程:4.12 指针和内存的关系分析》一节中,我们已经讲述了指针的身世。指针并不是我们简单认识的一个数据类型而已,指针类型的特殊是因为它和内存的形态有直接的关系。指针的作用用于定位内存。我们可以利用指针,在内存中穿梭。C/C++因为可以使用指针,所以让我们的程序可以很强大。再结合类型的强制转换,我们的代码就可以很灵活。
    然而,指针的强大,是一把双刃剑。在强大灵活的同时,也带来了威胁。如果用得好,那是行云流水一气呵成的畅快感。如果用得不好,那就是一场灾难。为什么会出现灾难,这就要说说指针和内存地址的关系咯。
    你可以将指针拟人为一个超人,一个为国家为人民服务的超人。如果这个超人在国家法律范围内做各种事情,自然非常强悍。当然,如果这个超人思想发生倾斜,走入了法律之外的禁地,比如杀人,比如抢劫。因为强大的能力,必然会造成巨大的破坏。如果逾越法律的界限,国家自然会不惜一切代价灭掉这个超人。尽管之前做过好事,但是还是要灭掉或囚禁。在法律面前,是没有情面可讲的。
    在计算机中,是有绝对的法律的,不像人类法律经常会因为执法人的不公正而出现各种无视法律的情况。所以说计算机里的法律是严格而无私的!但是很多人觉得,计算机哪来的法律呢?十分不理解。
    法律是什么?法律就是一系列的规定,不可逾越的行为规则。在人类世界里,破坏法律无视法律就是犯罪。在计算机世界里,那就是计算机病毒。就算是过失,都要遭受到惩罚,因为这是不允许的。计算机里更是不用说。
    那么计算机的法律是什么呢?什么说的语法规则就是一种规定。如果你不按照语法规则编译程序,就会报错。按照语法规则编写好程序,编译好了,生成了可运行的二进制程序。这个程序就相当于一个人了。但是谁也无法保证这个人会不会犯罪。可能是过失,可能是故意。二进制程序也是如此。人无完人,计算机还是人类编写出来的,在没有完人的基础上编写的程序,自然也不会有完美的程序。所以,程序犯过失罪就太常见了。程序不同的生父就是不同的程序员,因为水平不同,生出来的程序质量不一。有的可能就是先天性的,比如一运行就被系统干掉了。另外一种就是故意犯罪。比如病毒开发者,就是要去制造破坏。
    在计算机世界里,统治者是操作系统。操作系统管理所有计算机的硬件和软件,操作系统创造了整个计算机世界,自然也就有了绝对的权利,可以制定各种规则,让程序可以在操作系统中运行。那么操作系统就相当于政府机构了。计算机中的各种规则,其实就是对资源的使用规则,比如对内存的使用规则,对其他各种硬件的使用规则。反观人类社会,法律限定的不也是对社会上各种资源的访问规则嘛。如果你用抢劫的方式,就不在资源访问的规则内,就是犯罪了。然而,在公平竞争的环境下,比如比赛,这种抢夺又是合理的。如果一个国家的法律规定,任何场景下的抢夺都是合法的,那只不过是将所有人都放在一个公平的竞争环境中罢了。其实没有什么对错,只看人民愿不愿意这么想罢了。
    所以说规则也是相对的。计算机中同样存在这样的情况。计算机中规定了内存的使用规则,也就是对内存资源的限定。操作系统自己也要内存资源。如果哪个程序去抢劫操作系统使用的资源,将会得到最严厉的惩罚,那就是当场击毙。在人类社会,一样的。不信你去抢政府的地盘试试。然而如果你只是抢劫了其他程序的地盘,也可以活得很好。在这一点上,计算机没有人类法律完善。在计算机中,反而更加野蛮。你可以随意杀掉其他进程,而不用受到惩罚。因为这个是从比较高的层次来讲的,而操作系统并不是智能的,它无法判断是否合法。现代的操作系统还只是停留在对硬件访问和保护的层次,可以说还是很低级的层次上。
    在计算机中最为重视的内存。内存就相当于人类的粮食和水。是基础而又重要
开通会员付1C币>>阅读全文
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
收藏 0 点赞 0
公众号
微信赞赏
支付宝赞赏
领支付宝大红包
QQ群

相关阅读

分享到:
分享文章[C++语言零基础入门教程:4.14 指针和内存地址的关系分析]到QQ空间