首頁  >   經驗  >   C++語言零基礎入門教程:4.14 指針和內存地址的關系分析

C++語言零基礎入門教程:4.14 指針和內存地址的關系分析

查看 codexia 的博客 2017-05-08 22:55:12 1532 會員文章,禁止轉載
C++   入門  
手機閱讀 | 轉發賺積分
手機收藏 | 分享給好友
簡介內存地址是計算機資源分配中至關重要的一部分。指針是訪問和操作內存地址的,所以指針是踩在法律的邊緣的,一方面可以很強大,另一方面,也很容易犯錯。一旦犯錯,就會被系統懲罰。
    在《C++語言零基礎入門教程:4.12 指針和內存的關系分析》一節中,我們已經講述了指針的身世。指針并不是我們簡單認識的一個數據類型而已,指針類型的特殊是因為它和內存的形態有直接的關系。指針的作用用于定位內存。我們可以利用指針,在內存中穿梭。C/C++因為可以使用指針,所以讓我們的程序可以很強大。再結合類型的強制轉換,我們的代碼就可以很靈活。
    然而,指針的強大,是一把雙刃劍。在強大靈活的同時,也帶來了威脅。如果用得好,那是行云流水一氣呵成的暢快感。如果用得不好,那就是一場災難。為什么會出現災難,這就要說說指針和內存地址的關系咯。
    你可以將指針擬人為一個超人,一個為國家為人民服務的超人。如果這個超人在國家法律范圍內做各種事情,自然非常強悍。當然,如果這個超人思想發生傾斜,走入了法律之外的禁地,比如殺人,比如搶劫。因為強大的能力,必然會造成巨大的破壞。如果逾越法律的界限,國家自然會不惜一切代價滅掉這個超人。盡管之前做過好事,但是還是要滅掉或囚禁。在法律面前,是沒有情面可講的。
    在計算機中,是有絕對的法律的,不像人類法律經常會因為執法人的不公正而出現各種無視法律的情況。所以說計算機里的法律是嚴格而無私的!但是很多人覺得,計算機哪來的法律呢?十分不理解。
    法律是什么?法律就是一系列的規定,不可逾越的行為規則。在人類世界里,破壞法律無視法律就是犯罪。在計算機世界里,那就是計算機病毒。就算是過失,都要遭受到懲罰,因為這是不允許的。計算機里更是不用說。
    那么計算機的法律是什么呢?什么說的語法規則就是一種規定。如果你不按照語法規則編譯程序,就會報錯。按照語法規則編寫好程序,編譯好了,生成了可運行的二進制程序。這個程序就相當于一個人了。但是誰也無法保證這個人會不會犯罪??赡苁沁^失,可能是故意。二進制程序也是如此。人無完人,計算機還是人類編寫出來的,在沒有完人的基礎上編寫的程序,自然也不會有完美的程序。所以,程序犯過失罪就太常見了。程序不同的生父就是不同的程序員,因為水平不同,生出來的程序質量不一。有的可能就是先天性的,比如一運行就被系統干掉了。另外一種就是故意犯罪。比如病毒開發者,就是要去制造破壞。
    在計算機世界里,統治者是操作系統。操作系統管理所有計算機的硬件和軟件,操作系統創造了整個計算機世界,自然也就有了絕對的權利,可以制定各種規則,讓程序可以在操作系統中運行。那么操作系統就相當于政府機構了。計算機中的各種規則,其實就是對資源的使用規則,比如對內存的使用規則,對其他各種硬件的使用規則。反觀人類社會,法律限定的不也是對社會上各種資源的訪問規則嘛。如果你用搶劫的方式,就不在資源訪問的規則內,就是犯罪了。然而,在公平競爭的環境下,比如比賽,這種搶奪又是合理的。如果一個國家的法律規定,任何場景下的搶奪都是合法的,那只不過是將所有人都放在一個公平的競爭環境中罷了。其實沒有什么對錯,只看人民愿不愿意這么想罷了。
    所以說規則也是相對的。計算機中同樣存在這樣的情況。計算機中規定了內存的使用規則,也就是對內存資源的限定。操作系統自己也要內存資源。如果哪個程序去搶劫操作系統使用的資源,將會得到最嚴厲的懲罰,那就是當場擊斃。在人類社會,一樣的。不信你去搶政府的地盤試試。然而如果你只是搶劫了其他程序的地盤,也可以活得很好。在這一點上,計算機沒有人類法律完善。在計算機中,反而更加野蠻。你可以隨意殺掉其他進程,而不用受到懲罰。因為這個是從比較高的層次來講的,而操作系統并不是智能的,它無法判斷是否合法?,F代的操作系統還只是停留在對硬件訪問和保護的層次,可以說還是很低級的層次上。
    在計算機中最為重視的內存。內存就相當于人類的糧食和水。是基礎而又重要
開通會員付1C幣>>閱讀全文
標注
評論
站內搜
百度搜
傳送到手機
手機掃碼,識別文字,完成傳送x
加載中...
標注內容x
加載中...
添加標注x
收藏 0 點贊 0
公眾號
微信贊賞
支付寶贊賞
領支付寶大紅包
QQ群

相關閱讀

分享到:
分享文章[C++語言零基礎入門教程:4.14 指針和內存地址的關系分析]到QQ空間
时时彩012路计划软件